1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-09-01 12:05:37 +02:00

Settings search (wip)

This commit is contained in:
José Rebelo 2024-09-01 00:18:04 +01:00
parent 834c773dec
commit eb4e65985c
110 changed files with 743 additions and 380 deletions

View File

@ -24,6 +24,7 @@ vendor's servers.
* Gadgetbridge is licensed under the AGPLv3
* Files in app/src/main/java/net/osmand/ and app/src/main/aidl/net/osmand/ are licensed under the GPLv3 by OsmAnd BV
* Files in app/src/main/java/org/bouncycastle are licensed under the MIT license by The Legion of the Bouncy Castle Inc.
* File app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/SearchPreferenceHighlighter.java is licensed under the MIT license by ByteHamster
## Download

View File

@ -246,6 +246,7 @@ dependencies {
implementation 'com.github.wax911.android-emojify:gson:1.9.3'
implementation 'com.google.protobuf:protobuf-javalite:4.27.3'
implementation 'com.android.volley:volley:1.2.1'
implementation 'com.github.ByteHamster:SearchPreference:v2.5.1'
// Bouncy Castle is included directly in GB, to avoid pulling the entire dependency
// It's included in the org.bouncycastle.shaded package, to fix conflicts with roboelectric

View File

@ -39,15 +39,15 @@ import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceManager;
public class AboutUserPreferencesActivity extends AbstractSettingsActivityV2 {
@Override
protected String fragmentTag() {
return AboutUserPreferencesFragment.FRAGMENT_TAG;
}
private static final Logger LOG = LoggerFactory.getLogger(AboutUserPreferencesActivity.class);
@Override
protected PreferenceFragmentCompat newFragment() {
@ -55,8 +55,6 @@ public class AboutUserPreferencesActivity extends AbstractSettingsActivityV2 {
}
public static class AboutUserPreferencesFragment extends AbstractPreferenceFragment {
static final String FRAGMENT_TAG = "ABOUT_USER_PREFERENCES_FRAGMENT";
@Override
public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) {
setPreferencesFromResource(R.xml.about_user, rootKey);

View File

@ -19,8 +19,15 @@ package nodomain.freeyourgadget.gadgetbridge.activities;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.XmlRes;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.MenuProvider;
import androidx.fragment.app.DialogFragment;
import androidx.preference.EditTextPreference;
import androidx.preference.ListPreference;
@ -33,6 +40,8 @@ import androidx.preference.PreferenceScreen;
import androidx.preference.SeekBarPreference;
import androidx.preference.SwitchPreferenceCompat;
import com.bytehamster.lib.preferencesearch.SearchConfiguration;
import com.bytehamster.lib.preferencesearch.SearchPreference;
import com.mobeta.android.dslv.DragSortListPreference;
import com.mobeta.android.dslv.DragSortListPreferenceFragment;
@ -54,11 +63,59 @@ import nodomain.freeyourgadget.gadgetbridge.util.dialogs.MaterialEditTextPrefere
import nodomain.freeyourgadget.gadgetbridge.util.dialogs.MaterialListPreferenceDialogFragment;
import nodomain.freeyourgadget.gadgetbridge.util.dialogs.MaterialMultiSelectListPreferenceDialogFragment;
public abstract class AbstractPreferenceFragment extends PreferenceFragmentCompat {
protected static final Logger LOG = LoggerFactory.getLogger(AbstractPreferenceFragment.class);
public abstract class AbstractPreferenceFragment extends PreferenceFragmentCompat implements MenuProvider {
private static final Logger LOG = LoggerFactory.getLogger(AbstractPreferenceFragment.class);
public static final String FRAGMENT_TAG = "preference_fragment";
private final SharedPreferencesChangeHandler sharedPreferencesChangeHandler = new SharedPreferencesChangeHandler();
private SearchConfiguration mSearchConfiguration;
@Override
public void onCreate(@Nullable final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requireActivity().addMenuProvider(this);
ensureSearchConfiguration();
}
private SearchConfiguration ensureSearchConfiguration() {
if (mSearchConfiguration == null) {
final SearchPreference searchPreference = findPreference("searchPreference");
if (searchPreference != null) {
mSearchConfiguration = searchPreference.getSearchConfiguration();
mSearchConfiguration.setActivity((AppCompatActivity) requireActivity());
mSearchConfiguration.setHistoryId(requireActivity().getClass().getName());
mSearchConfiguration.setBreadcrumbsEnabled(true);
}
}
return mSearchConfiguration;
}
@Override
public void onCreateMenu(@NonNull final Menu menu, @NonNull final MenuInflater inflater) {
if (mSearchConfiguration != null) {
inflater.inflate(R.menu.menu_preferences, menu);
}
}
@Override
public boolean onMenuItemSelected(@NonNull final MenuItem item) {
final int itemId = item.getItemId();
if (itemId == R.id.preferences_search) {
final SearchPreference searchPreference = findPreference("searchPreference");
if (searchPreference != null) {
mSearchConfiguration.showSearchFragment();
return true;
}
}
return false;
}
@Override
public void onStart() {
super.onStart();
@ -142,6 +199,29 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragmentCompa
}
}
protected void index(@XmlRes final int preferencesResId) {
index(preferencesResId, 0);
}
protected void index(final Preference preference) {
ensureSearchConfiguration();
if (mSearchConfiguration != null) {
mSearchConfiguration.indexItem(preference);
}
}
protected void index(@XmlRes final int preferencesResId, final int breadcrumb) {
ensureSearchConfiguration();
if (mSearchConfiguration != null) {
final SearchConfiguration.SearchIndexItem indexItem = mSearchConfiguration.index(preferencesResId);
if (breadcrumb != 0) {
indexItem.addBreadcrumb(breadcrumb);
}
}
}
/**
* Reload the preferences in the current screen. This is needed when the user enters or exists a PreferenceScreen,
* otherwise the settings won't be reloaded by the {@link SharedPreferencesChangeHandler}, as the preferences return

View File

@ -16,41 +16,67 @@
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.activities;
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceScreen;
import nodomain.freeyourgadget.gadgetbridge.R;
import com.bytehamster.lib.preferencesearch.SearchPreferenceResult;
import com.bytehamster.lib.preferencesearch.SearchPreferenceResultListener;
import nodomain.freeyourgadget.gadgetbridge.util.SearchPreferenceHighlighter;
public abstract class AbstractSettingsActivityV2 extends AbstractGBActivity implements
PreferenceFragmentCompat.OnPreferenceStartScreenCallback {
PreferenceFragmentCompat.OnPreferenceStartScreenCallback,
SearchPreferenceResultListener {
public static final String EXTRA_PREF_SCREEN = "preferenceScreen";
public static final String EXTRA_PREF_HIGHLIGHT = "preferenceToHighlight";
protected abstract String fragmentTag();
protected abstract PreferenceFragmentCompat newFragment();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_device_settings);
if (savedInstanceState == null) {
Fragment fragment = getSupportFragmentManager().findFragmentByTag(fragmentTag());
PreferenceFragmentCompat fragment = (PreferenceFragmentCompat) getSupportFragmentManager().findFragmentByTag(AbstractPreferenceFragment.FRAGMENT_TAG);
if (fragment == null) {
fragment = newFragment();
}
final String prefScreen = getIntent().getStringExtra(EXTRA_PREF_SCREEN);
if (prefScreen != null) {
final Bundle args;
if (fragment.getArguments() != null) {
args = fragment.getArguments();
} else {
args = new Bundle();
fragment.setArguments(args);
}
args.putString(PreferenceFragmentCompat.ARG_PREFERENCE_ROOT, prefScreen);
}
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.settings_container, fragment, fragmentTag())
.replace(android.R.id.content, fragment, AbstractPreferenceFragment.FRAGMENT_TAG)
.commit();
final String highlightKey = getIntent().getStringExtra(EXTRA_PREF_HIGHLIGHT);
if (highlightKey != null) {
SearchPreferenceHighlighter.highlight(fragment, highlightKey);
}
}
}
@Override
public boolean onPreferenceStartScreen(final PreferenceFragmentCompat caller, final PreferenceScreen preferenceScreen) {
public boolean onPreferenceStartScreen(@NonNull final PreferenceFragmentCompat caller,
@NonNull final PreferenceScreen preferenceScreen) {
final PreferenceFragmentCompat fragment = newFragment();
final Bundle args;
if (fragment.getArguments() != null) {
@ -63,7 +89,7 @@ public abstract class AbstractSettingsActivityV2 extends AbstractGBActivity impl
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.settings_container, fragment, preferenceScreen.getKey())
.replace(android.R.id.content, fragment, preferenceScreen.getKey())
.addToBackStack(preferenceScreen.getKey())
.commit();
@ -83,6 +109,57 @@ public abstract class AbstractSettingsActivityV2 extends AbstractGBActivity impl
return super.onOptionsItemSelected(item);
}
@Override
public void onSearchResultClicked(final SearchPreferenceResult result) {
//result.closeSearchPage(this);
//// FIXME not sure why we need this, but the search fragment stays in the back stack otherwise
//getSupportFragmentManager().popBackStack(SearchPreferenceFragment.TAG, FragmentManager.POP_BACK_STACK_INCLUSIVE);
final FragmentManager fragmentManager = getSupportFragmentManager();
final Fragment currentFragment = fragmentManager.findFragmentByTag(AbstractPreferenceFragment.FRAGMENT_TAG);
if (currentFragment == null) {
return;
}
if (!(currentFragment instanceof PreferenceFragmentCompat)) {
return;
}
final PreferenceFragmentCompat currentPreferenceFragment = (PreferenceFragmentCompat) currentFragment;
final String currentScreen = currentPreferenceFragment.getPreferenceScreen().getKey();
if (result.getScreen() != null && !result.getScreen().equals(currentScreen)) {
final PreferenceFragmentCompat newFragmentForScreen = newFragment();
final Bundle args;
if (newFragmentForScreen.getArguments() != null) {
args = newFragmentForScreen.getArguments();
} else {
args = new Bundle();
}
args.putString(PreferenceFragmentCompat.ARG_PREFERENCE_ROOT, result.getScreen());
newFragmentForScreen.setArguments(args);
fragmentManager.beginTransaction()
.replace(android.R.id.content, newFragmentForScreen)
.addToBackStack(null)
.commit();
result.highlight(newFragmentForScreen);
} else {
final Preference preference = currentPreferenceFragment.findPreference(result.getKey());
if (preference != null) {
result.highlight(currentPreferenceFragment);
}
}
}
protected void openActivityAndHighlight(final Class<? extends AbstractSettingsActivityV2> clazz,
final SearchPreferenceResult result) {
final Intent intent = new Intent(this, clazz);
intent.putExtra(EXTRA_PREF_SCREEN, result.getScreen());
intent.putExtra(EXTRA_PREF_HIGHLIGHT, result.getKey());
startActivity(intent);
}
public void setActionBarTitle(final CharSequence title) {
final ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {

View File

@ -34,19 +34,17 @@ import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
public class DashboardPreferencesActivity extends AbstractSettingsActivityV2 {
@Override
protected String fragmentTag() {
return DashboardPreferencesFragment.FRAGMENT_TAG;
}
@Override
protected PreferenceFragmentCompat newFragment() {
return new DashboardPreferencesFragment();
}
public static class DashboardPreferencesFragment extends AbstractPreferenceFragment {
static final String FRAGMENT_TAG = "DASHBOARD_PREFERENCES_FRAGMENT";
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public static class DashboardPreferencesFragment extends AbstractPreferenceFragment {
@Override
public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) {
setPreferencesFromResource(R.xml.dashboard_preferences, rootKey);

View File

@ -38,11 +38,6 @@ public class NotificationManagementActivity extends AbstractSettingsActivityV2 {
private static final int RINGTONE_REQUEST_CODE = 4712;
private static final String DEFAULT_RINGTONE_URI = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE).toString();
@Override
protected String fragmentTag() {
return NotificationPreferencesFragment.FRAGMENT_TAG;
}
@Override
protected PreferenceFragmentCompat newFragment() {
return new NotificationPreferencesFragment();
@ -51,8 +46,6 @@ public class NotificationManagementActivity extends AbstractSettingsActivityV2 {
public static class NotificationPreferencesFragment extends AbstractPreferenceFragment {
private static final Logger LOG = LoggerFactory.getLogger(NotificationPreferencesFragment.class);
static final String FRAGMENT_TAG = "NOTIFICATION_PREFERENCES_FRAGMENT";
@Override
protected void onSharedPreferenceChanged(final Preference preference) {
if (GBPrefs.PING_TONE.equals(preference.getKey())) {

View File

@ -34,6 +34,7 @@ import android.net.Uri;
import android.os.Bundle;
import android.provider.DocumentsContract;
import android.text.InputType;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
@ -48,6 +49,7 @@ import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import com.bytehamster.lib.preferencesearch.SearchPreferenceResult;
import com.google.android.material.color.DynamicColors;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@ -77,21 +79,33 @@ import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
public class SettingsActivity extends AbstractSettingsActivityV2 {
public static final String PREF_MEASUREMENT_SYSTEM = "measurement_system";
@Override
protected String fragmentTag() {
return SettingsFragment.FRAGMENT_TAG;
}
@Override
protected PreferenceFragmentCompat newFragment() {
return new SettingsFragment();
}
@Override
public void onSearchResultClicked(final SearchPreferenceResult result) {
if (result.getResourceFile() == R.xml.about_user) {
openActivityAndHighlight(AboutUserPreferencesActivity.class, result);
} else if (result.getResourceFile() == R.xml.notifications_preferences) {
openActivityAndHighlight(NotificationManagementActivity.class, result);
} else if (result.getResourceFile() == R.xml.dashboard_preferences) {
openActivityAndHighlight(DashboardPreferencesActivity.class, result);
} else if (result.getResourceFile() == R.xml.charts_preferences) {
openActivityAndHighlight(ChartsPreferencesActivity.class, result);
} else if (result.getResourceFile() == R.xml.sleepasandroid_preferences) {
openActivityAndHighlight(SleepAsAndroidPreferencesActivity.class, result);
} else if (result.getResourceFile() == R.xml.discovery_pairing_preferences) {
openActivityAndHighlight(DiscoveryPairingPreferenceActivity.class, result);
} else {
super.onSearchResultClicked(result);
}
}
public static class SettingsFragment extends AbstractPreferenceFragment {
private static final Logger LOG = LoggerFactory.getLogger(SettingsActivity.class);
static final String FRAGMENT_TAG = "SETTINGS_FRAGMENT";
private static final int EXPORT_LOCATION_FILE_REQUEST_CODE = 4711;
private EditText fitnessAppEditText = null;
private int fitnessAppSelectionListSpinnerFirstRun = 0;
@ -99,6 +113,13 @@ public class SettingsActivity extends AbstractSettingsActivityV2 {
@Override
public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) {
setPreferencesFromResource(R.xml.preferences, rootKey);
index(R.xml.preferences);
index(R.xml.about_user, R.string.activity_prefs_about_you);
index(R.xml.notifications_preferences, R.string.title_activity_notification_management);
index(R.xml.dashboard_preferences, R.string.bottom_nav_dashboard);
index(R.xml.charts_preferences, R.string.activity_prefs_charts);
index(R.xml.sleepasandroid_preferences, R.string.sleepasandroid_settings);
index(R.xml.discovery_pairing_preferences, R.string.activity_prefs_discovery_pairing);
setInputTypeFor("rtl_max_line_length", InputType.TYPE_CLASS_NUMBER);
setInputTypeFor("location_latitude", InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED);
@ -486,7 +507,8 @@ public class SettingsActivity extends AbstractSettingsActivityV2 {
editor.putString("opentracks_packagename", fitnessAppEditText.getText().toString());
editor.apply();
})
.setNegativeButton(R.string.Cancel, (dialog, which) -> {})
.setNegativeButton(R.string.Cancel, (dialog, which) -> {
})
.show();
return false;
});
@ -585,4 +607,13 @@ public class SettingsActivity extends AbstractSettingsActivityV2 {
LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent);
}
}
@Override
public boolean onOptionsItemSelected(final MenuItem item) {
if (item.getItemId() == android.R.id.home) {
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
}

View File

@ -22,19 +22,12 @@ import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.devices.SleepAsAndroidFeature;
public class SleepAsAndroidPreferencesActivity extends AbstractSettingsActivityV2 {
@Override
protected String fragmentTag() {
return SleepAsAndroidPreferencesFragment.FRAGMENT_TAG;
}
@Override
protected PreferenceFragmentCompat newFragment() {
return new SleepAsAndroidPreferencesFragment();
}
public static class SleepAsAndroidPreferencesFragment extends AbstractPreferenceFragment {
static final String FRAGMENT_TAG = "SLEEPASANDROID_PREFERENCES_FRAGMENT";
@Override
public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) {
setPreferencesFromResource(R.xml.sleepasandroid_preferences, rootKey);

View File

@ -39,11 +39,6 @@ import nodomain.freeyourgadget.gadgetbridge.util.preferences.DevicePrefs;
public class ChartsPreferencesActivity extends AbstractSettingsActivityV2 {
private GBDevice device;
@Override
protected String fragmentTag() {
return ChartsPreferencesFragment.FRAGMENT_TAG;
}
@Override
protected PreferenceFragmentCompat newFragment() {
return ChartsPreferencesFragment.newInstance(device);
@ -57,8 +52,6 @@ public class ChartsPreferencesActivity extends AbstractSettingsActivityV2 {
}
public static class ChartsPreferencesFragment extends AbstractPreferenceFragment {
static final String FRAGMENT_TAG = "CHARTS_PREFERENCES_FRAGMENT";
private GBDevice device;
static ChartsPreferencesFragment newInstance(final GBDevice device) {

View File

@ -16,9 +16,14 @@
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.activities.devicesettings;
import android.content.Intent;
import androidx.preference.PreferenceFragmentCompat;
import com.bytehamster.lib.preferencesearch.SearchPreferenceResult;
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractSettingsActivityV2;
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
public class DeviceSettingsActivity extends AbstractSettingsActivityV2 {
@ -30,11 +35,6 @@ public class DeviceSettingsActivity extends AbstractSettingsActivityV2 {
APPLICATION_SETTINGS
}
@Override
protected String fragmentTag() {
return DeviceSpecificSettingsFragment.FRAGMENT_TAG;
}
@Override
protected PreferenceFragmentCompat newFragment() {
final GBDevice device = getIntent().getParcelableExtra(GBDevice.EXTRA_DEVICE);
@ -42,4 +42,20 @@ public class DeviceSettingsActivity extends AbstractSettingsActivityV2 {
return DeviceSpecificSettingsFragment.newInstance(device, menu_entry);
}
@Override
public void onSearchResultClicked(final SearchPreferenceResult result) {
final GBDevice device = getIntent().getParcelableExtra(GBDevice.EXTRA_DEVICE);
DeviceCoordinator coordinator = device.getDeviceCoordinator();
DeviceSpecificSettings deviceSpecificSettings = coordinator.getDeviceSpecificSettings(device);
String rootScreenForSubScreen = deviceSpecificSettings.getRootScreenForSubScreen(result.getResourceFile());
if (rootScreenForSubScreen != null) {
final Intent intent = getIntent(); // FIXME new Intent(this, DeviceSettingsActivity.class);
intent.putExtra(EXTRA_PREF_SCREEN, rootScreenForSubScreen);
intent.putExtra(EXTRA_PREF_HIGHLIGHT, result.getKey());
startActivity(intent);
}
}
}

View File

@ -29,6 +29,8 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import nodomain.freeyourgadget.gadgetbridge.R;
/**
* A class that contains the device-specific settings screens for a device. All the integers in this
* class correspond to xml resources for preferences.
@ -115,6 +117,25 @@ public class DeviceSpecificSettings implements Parcelable {
Objects.requireNonNull(subScreens.get(e.getKey())).add(screen);
}
}
// Ensure search is always at the start
final int searchIndex = rootScreens.indexOf(R.xml.devicesettings_search);
if (searchIndex >= 0) {
rootScreens.remove(searchIndex);
rootScreens.add(0, R.xml.devicesettings_search);
}
}
public String getRootScreenForSubScreen(final int subScreen) {
for (final Map.Entry<String, List<Integer>> e : subScreens.entrySet()) {
for (final Integer ss : e.getValue()) {
if (ss == subScreen) {
return e.getKey();
}
}
}
return null;
}
public List<Integer> getRootScreens() {

View File

@ -50,6 +50,8 @@ import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreferenceCompat;
import com.bytehamster.lib.preferencesearch.SearchPreferenceResult;
import org.apache.commons.lang3.ArrayUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -89,8 +91,6 @@ public class DeviceSpecificSettingsFragment extends AbstractPreferenceFragment i
private static final Logger LOG = LoggerFactory.getLogger(DeviceSpecificSettingsFragment.class);
static final String FRAGMENT_TAG = "DEVICE_SPECIFIC_SETTINGS_FRAGMENT";
private DeviceSpecificSettingsCustomizer deviceSpecificSettingsCustomizer;
private GBDevice device;
@ -149,6 +149,22 @@ public class DeviceSpecificSettingsFragment extends AbstractPreferenceFragment i
addPreferencesFromResource(setting);
}
}
for (final Integer rootId : deviceSpecificSettings.getRootScreens()) {
index(rootId);
DeviceSpecificSettingsScreen rootScreen = DeviceSpecificSettingsScreen.fromXml(rootId);
if (rootScreen != null) {
if (deviceSpecificSettings.getScreen(rootScreen.getKey()) != null) {
for (final Integer screen : deviceSpecificSettings.getScreen(rootScreen.getKey())) {
index(screen);
}
}
}
}
getBatterySettings().forEach(this::index);
} else {
// First attempt to find a known screen for this key
final List<Integer> screenSettings = deviceSpecificSettings.getScreen(rootKey);
@ -197,16 +213,19 @@ public class DeviceSpecificSettingsFragment extends AbstractPreferenceFragment i
private void addDynamicSettings(final String rootKey) {
if (rootKey.equals(DeviceSpecificSettingsScreen.BATTERY.getKey())) {
addBatterySettings();
final PreferenceScreen batteryScreen = getPreferenceScreen();
if (batteryScreen == null) {
return;
}
getBatterySettings().forEach(batteryScreen::addPreference);
}
}
private void addBatterySettings() {
private List<Preference> getBatterySettings() {
final List<Preference> preferences = new ArrayList<>();
final DeviceCoordinator coordinator = device.getDeviceCoordinator();
final PreferenceScreen batteryScreen = getPreferenceScreen();
if (batteryScreen == null) {
return;
}
final BatteryConfig[] batteryConfigs = coordinator.getBatteryConfig(device);
for (final BatteryConfig batteryConfig : batteryConfigs) {
if (batteryConfigs.length > 1 || coordinator.addBatteryPollingSettings()) {
@ -218,7 +237,7 @@ public class DeviceSpecificSettingsFragment extends AbstractPreferenceFragment i
} else {
prefHeader.setTitle(requireContext().getString(R.string.battery_i, batteryConfig.getBatteryIndex()));
}
batteryScreen.addPreference(prefHeader);
preferences.add(prefHeader);
}
final SwitchPreferenceCompat showInNotification = new SwitchPreferenceCompat(requireContext());
@ -227,7 +246,7 @@ public class DeviceSpecificSettingsFragment extends AbstractPreferenceFragment i
showInNotification.setTitle(R.string.show_in_notification);
showInNotification.setIconSpaceReserved(false);
showInNotification.setDefaultValue(true);
batteryScreen.addPreference(showInNotification);
preferences.add(showInNotification);
final SwitchPreferenceCompat notifyLowEnabled = new SwitchPreferenceCompat(requireContext());
notifyLowEnabled.setLayoutResource(R.layout.preference_checkbox);
@ -235,7 +254,7 @@ public class DeviceSpecificSettingsFragment extends AbstractPreferenceFragment i
notifyLowEnabled.setTitle(R.string.battery_low_notify_enabled);
notifyLowEnabled.setDefaultValue(true);
notifyLowEnabled.setIconSpaceReserved(false);
batteryScreen.addPreference(notifyLowEnabled);
preferences.add(notifyLowEnabled);
final EditTextPreference notifyLowThreshold = new EditTextPreference(requireContext());
notifyLowThreshold.setKey(PREF_BATTERY_NOTIFY_LOW_THRESHOLD + batteryConfig.getBatteryIndex());
@ -252,7 +271,7 @@ public class DeviceSpecificSettingsFragment extends AbstractPreferenceFragment i
R.string.battery_percentage_str
));
batteryScreen.addPreference(notifyLowThreshold);
preferences.add(notifyLowThreshold);
final SwitchPreferenceCompat notifyFullEnabled = new SwitchPreferenceCompat(requireContext());
notifyFullEnabled.setLayoutResource(R.layout.preference_checkbox);
@ -260,7 +279,7 @@ public class DeviceSpecificSettingsFragment extends AbstractPreferenceFragment i
notifyFullEnabled.setTitle(R.string.battery_full_notify_enabled);
notifyFullEnabled.setDefaultValue(true);
notifyFullEnabled.setIconSpaceReserved(false);
batteryScreen.addPreference(notifyFullEnabled);
preferences.add(notifyFullEnabled);
final EditTextPreference notifyFullThreshold = new EditTextPreference(requireContext());
notifyFullThreshold.setKey(PREF_BATTERY_NOTIFY_FULL_THRESHOLD + batteryConfig.getBatteryIndex());
@ -276,7 +295,7 @@ public class DeviceSpecificSettingsFragment extends AbstractPreferenceFragment i
requireContext().getString(R.string.default_percentage, batteryConfig.getDefaultFullThreshold()),
R.string.battery_percentage_str
));
batteryScreen.addPreference(notifyFullThreshold);
preferences.add(notifyFullThreshold);
}
if (coordinator.addBatteryPollingSettings()) {
@ -285,7 +304,7 @@ public class DeviceSpecificSettingsFragment extends AbstractPreferenceFragment i
prefHeader.setIconSpaceReserved(false);
prefHeader.setTitle(R.string.pref_battery_polling_configuration);
prefHeader.setSummary(R.string.pref_battery_polling_summary);
batteryScreen.addPreference(prefHeader);
preferences.add(prefHeader);
final SwitchPreferenceCompat pollingToggle = new SwitchPreferenceCompat(requireContext());
pollingToggle.setLayoutResource(R.layout.preference_checkbox);
@ -293,7 +312,7 @@ public class DeviceSpecificSettingsFragment extends AbstractPreferenceFragment i
pollingToggle.setTitle(R.string.pref_battery_polling_enable);
pollingToggle.setDefaultValue(true);
pollingToggle.setIconSpaceReserved(false);
batteryScreen.addPreference(pollingToggle);
preferences.add(pollingToggle);
final EditTextPreference pollingInterval = new EditTextPreference(requireContext());
pollingInterval.setKey(PREF_BATTERY_POLLING_INTERVAL);
@ -310,8 +329,10 @@ public class DeviceSpecificSettingsFragment extends AbstractPreferenceFragment i
getString(R.string.interval_fifteen_minutes),
R.string.pref_battery_polling_interval_format
));
batteryScreen.addPreference(pollingInterval);
preferences.add(pollingInterval);
}
return preferences;
}
/*

View File

@ -56,4 +56,14 @@ public enum DeviceSpecificSettingsScreen {
public int getXml() {
return xml;
}
public static DeviceSpecificSettingsScreen fromXml(final int xml) {
for (final DeviceSpecificSettingsScreen screen : DeviceSpecificSettingsScreen.values()) {
if (screen.xml == xml) {
return screen;
}
}
return null;
}
}

View File

@ -28,19 +28,12 @@ import nodomain.freeyourgadget.gadgetbridge.activities.AbstractSettingsActivityV
import nodomain.freeyourgadget.gadgetbridge.util.GB;
public class DiscoveryPairingPreferenceActivity extends AbstractSettingsActivityV2 {
@Override
protected String fragmentTag() {
return DiscoveryPairingPreferenceFragment.FRAGMENT_TAG;
}
@Override
protected PreferenceFragmentCompat newFragment() {
return new DiscoveryPairingPreferenceFragment();
}
public static class DiscoveryPairingPreferenceFragment extends AbstractPreferenceFragment {
static final String FRAGMENT_TAG = "DISCOVERY_PAIRING_PREFERENCES_FRAGMENT";
@Override
public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) {
setPreferencesFromResource(R.xml.discovery_pairing_preferences, rootKey);

View File

@ -41,11 +41,6 @@ public class LoyaltyCardsSettingsActivity extends AbstractSettingsActivityV2 imp
private GBDevice device;
@Override
protected String fragmentTag() {
return LoyaltyCardsSettingsFragment.FRAGMENT_TAG;
}
@Override
protected PreferenceFragmentCompat newFragment() {
return LoyaltyCardsSettingsFragment.newInstance(device);

View File

@ -61,8 +61,6 @@ import nodomain.freeyourgadget.gadgetbridge.util.StringUtils;
public class LoyaltyCardsSettingsFragment extends AbstractPreferenceFragment {
private static final Logger LOG = LoggerFactory.getLogger(LoyaltyCardsSettingsFragment.class);
static final String FRAGMENT_TAG = "LOYALTY_CARDS_SETTINGS_FRAGMENT";
private GBDevice device;
private void setSettingsFileSuffix(final String settingsFileSuffix) {

View File

@ -140,6 +140,8 @@ public abstract class GarminCoordinator extends AbstractBLEDeviceCoordinator {
public DeviceSpecificSettings getDeviceSpecificSettings(final GBDevice device) {
final DeviceSpecificSettings deviceSpecificSettings = new DeviceSpecificSettings();
deviceSpecificSettings.addRootScreen(R.xml.devicesettings_search);
if (supports(device, GarminCapability.REALTIME_SETTINGS)) {
deviceSpecificSettings.addRootScreen(R.xml.devicesettings_garmin_realtime_settings);
}

View File

@ -26,11 +26,6 @@ public class GarminRealtimeSettingsActivity extends AbstractSettingsActivityV2 {
public static final String EXTRA_SCREEN_ID = "screenId";
@Override
protected String fragmentTag() {
return GarminRealtimeSettingsFragment.FRAGMENT_TAG;
}
@Override
protected PreferenceFragmentCompat newFragment() {
return GarminRealtimeSettingsFragment.newInstance(device, screenId);

View File

@ -77,8 +77,6 @@ public class GarminRealtimeSettingsFragment extends AbstractPreferenceFragment {
public static final int ROOT_SCREEN_ID = 36352;
static final String FRAGMENT_TAG = "GARMIN_REALTIME_SETTINGS_FRAGMENT";
private GBDevice device;
private int screenId = ROOT_SCREEN_ID;

View File

@ -353,6 +353,8 @@ public abstract class ZeppOsCoordinator extends HuamiCoordinator {
public DeviceSpecificSettings getDeviceSpecificSettings(final GBDevice device) {
final DeviceSpecificSettings deviceSpecificSettings = new DeviceSpecificSettings();
deviceSpecificSettings.addRootScreen(R.xml.devicesettings_search);
//
// Apps
// TODO: These should go somewhere else

View File

@ -35,11 +35,6 @@ import nodomain.freeyourgadget.gadgetbridge.activities.AbstractSettingsActivityV
public class HybridHRWatchfaceSettingsActivity extends AbstractSettingsActivityV2 {
static HybridHRWatchfaceSettings settings;
@Override
protected String fragmentTag() {
return HybridHRWatchfaceSettingsFragment.FRAGMENT_TAG;
}
@Override
protected PreferenceFragmentCompat newFragment() {
return new HybridHRWatchfaceSettingsFragment();
@ -82,8 +77,6 @@ public class HybridHRWatchfaceSettingsActivity extends AbstractSettingsActivityV
}
public static class HybridHRWatchfaceSettingsFragment extends AbstractPreferenceFragment implements Preference.OnPreferenceChangeListener {
static final String FRAGMENT_TAG = "HYBRID_HR_WATCHFACE_SETTINGS_FRAGMENT";
@Override
public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) {
setPreferencesFromResource(R.xml.fossil_hr_watchface_settings, rootKey);

View File

@ -49,11 +49,6 @@ public class HybridHRWatchfaceWidgetActivity extends AbstractSettingsActivityV2
private static final Boolean WIDGET_CUSTOM_DEFAULT_HIDE_TEXT = true;
private static final Boolean WIDGET_CUSTOM_DEFAULT_SHOW_CIRCLE = true;
@Override
protected String fragmentTag() {
return HybridHRWatchfaceWidgetFragment.FRAGMENT_TAG;
}
@Override
protected PreferenceFragmentCompat newFragment() {
return new HybridHRWatchfaceWidgetFragment();
@ -99,8 +94,6 @@ public class HybridHRWatchfaceWidgetActivity extends AbstractSettingsActivityV2
}
public static class HybridHRWatchfaceWidgetFragment extends AbstractPreferenceFragment implements Preference.OnPreferenceChangeListener {
static final String FRAGMENT_TAG = "HYBRID_HR_WATCHFACE_WIDGET_FRAGMENT";
@Override
public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) {
setPreferencesFromResource(R.xml.fossil_hr_widget_settings, rootKey);

View File

@ -0,0 +1,85 @@
package nodomain.freeyourgadget.gadgetbridge.util;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.util.Log;
import android.util.TypedValue;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceGroup;
import androidx.recyclerview.widget.RecyclerView;
/**
* Copied as-is from <a href="https://github.com/ByteHamster/SearchPreference/blob/0c5669a6423292f1653abd9259a4040dad96f84e/lib/src/main/java/com/bytehamster/lib/preferencesearch/SearchPreferenceResult.java">SearchPreferenceResult</a>, since the constructor is protected, and
* we need a way to highlight preferences in a different activity due to the way Gadgetbridge is built.
*/
public class SearchPreferenceHighlighter {
public static void highlight(final PreferenceFragmentCompat prefsFragment, final String key) {
new Handler().post(() -> doHighlight(prefsFragment, key));
}
private static void doHighlight(final PreferenceFragmentCompat prefsFragment, final String key) {
final Preference prefResult = prefsFragment.findPreference(key);
if (prefResult == null) {
Log.e("doHighlight", "Preference not found on given screen");
return;
}
final RecyclerView recyclerView = prefsFragment.getListView();
final RecyclerView.Adapter<?> adapter = recyclerView.getAdapter();
if (adapter instanceof PreferenceGroup.PreferencePositionCallback) {
PreferenceGroup.PreferencePositionCallback callback = (PreferenceGroup.PreferencePositionCallback) adapter;
final int position = callback.getPreferenceAdapterPosition(prefResult);
if (position != RecyclerView.NO_POSITION) {
recyclerView.scrollToPosition(position);
recyclerView.postDelayed(() -> {
RecyclerView.ViewHolder holder = recyclerView.findViewHolderForAdapterPosition(position);
if (holder != null) {
Drawable oldBackground = holder.itemView.getBackground();
int color = getColorFromAttr(prefsFragment.getContext(), android.R.attr.textColorPrimary);
holder.itemView.setBackgroundColor(color & 0xffffff | 0x33000000);
new Handler().postDelayed(() -> holder.itemView.setBackgroundDrawable(oldBackground), 1000);
return;
}
highlightFallback(prefsFragment, prefResult);
}, 200);
return;
}
}
highlightFallback(prefsFragment, prefResult);
}
/**
* Alternative highlight method if accessing the view did not work
*/
private static void highlightFallback(PreferenceFragmentCompat prefsFragment, final Preference prefResult) {
final Drawable oldIcon = prefResult.getIcon();
final boolean oldSpaceReserved = prefResult.isIconSpaceReserved();
Drawable arrow = AppCompatResources.getDrawable(prefsFragment.getContext(), com.bytehamster.lib.preferencesearch.R.drawable.searchpreference_ic_arrow_right);
int color = getColorFromAttr(prefsFragment.getContext(), android.R.attr.textColorPrimary);
arrow.setColorFilter(color, PorterDuff.Mode.SRC_IN);
prefResult.setIcon(arrow);
prefsFragment.scrollToPreference(prefResult);
new Handler().postDelayed(() -> {
prefResult.setIcon(oldIcon);
prefResult.setIconSpaceReserved(oldSpaceReserved);
}, 1000);
}
private static int getColorFromAttr(Context context, int attr) {
TypedValue typedValue = new TypedValue();
Resources.Theme theme = context.getTheme();
theme.resolveAttribute(attr, typedValue, true);
TypedArray arr = context.obtainStyledAttributes(typedValue.data, new int[]{
android.R.attr.textColorPrimary});
int color = arr.getColor(0, 0xff3F51B5);
arr.recycle();
return color;
}
}

View File

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp">
<FrameLayout
android:id="@+id/settings_container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>

View File

@ -0,0 +1,12 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".activities.DashboardFragment">
<item
android:id="@+id/preferences_search"
android:icon="@drawable/searchpreference_ic_search"
android:title="@string/menuitem_calendar"
app:iconTint="?attr/actionmenu_icon_color"
app:showAsAction="always" />
</menu>

View File

@ -2091,6 +2091,8 @@
<string name="error_background_service">Failed to start background service</string>
<string name="error_background_service_reason_truncated">Starting the background service failed because…</string>
<string name="app_crash_notification_title">%1s has crashed</string>
<string name="app_crash_share_stacktrace">Share error</string>
<string name="device_is_currently_bonded">ALREADY BONDED</string>
<string name="device_requires_key">KEY REQUIRED, LONG PRESS TO ENTER</string>
<string name="device_unsupported">UNSUPPORTED</string>

View File

@ -24,7 +24,7 @@
android:entries="@array/gender"
android:entryValues="@array/gender_values"
android:key="activity_user_gender"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/activity_prefs_gender" />
<!--TODO: support localized heights and weights -->

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:icon="@drawable/ic_always_on_display"
android:key="pref_screen_always_on_display"
@ -15,7 +16,7 @@
android:entries="@array/always_on_display"
android:entryValues="@array/always_on_display_values"
android:key="always_on_display_mode"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_always_on_display" />
<nodomain.freeyourgadget.gadgetbridge.util.XTimePreference
@ -39,7 +40,7 @@
android:entries="@array/pref_huami2021_empty_array"
android:entryValues="@array/pref_huami2021_empty_array"
android:key="always_on_display_style"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_always_on_display_style" />
</PreferenceScreen>
</androidx.preference.PreferenceScreen>

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:icon="@drawable/ic_heartrate"
android:key="screen_autoheartrate"
@ -29,7 +30,7 @@
android:entries="@array/autoheartrate_interval_hours"
android:entryValues="@array/autoheartrate_interval_hours"
android:key="pref_autoheartrate_interval"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_autoheartrate_interval" />
<nodomain.freeyourgadget.gadgetbridge.util.XTimePreference

View File

@ -1,11 +1,12 @@
<?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">
<ListPreference
android:defaultValue="off"
android:entries="@array/sony_automatic_power_off_names"
android:entryValues="@array/sony_automatic_power_off_values"
android:icon="@drawable/ic_power_settings_new"
android:key="pref_sony_automatic_power_off"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/sony_automatic_power_off" />
</androidx.preference.PreferenceScreen>

View File

@ -1,11 +1,12 @@
<?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">
<ListPreference
android:defaultValue="off"
android:entries="@array/sony_automatic_power_off_when_taken_off_names"
android:entryValues="@array/sony_automatic_power_off_when_taken_off_values"
android:icon="@drawable/ic_power_settings_new"
android:key="pref_sony_automatic_power_off"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/sony_automatic_power_off" />
</androidx.preference.PreferenceScreen>

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:key="screen_button_actions"
android:icon="@drawable/ic_smart_button"
@ -36,7 +37,7 @@
android:entryValues="@array/button_action_values"
android:key="button_single_press_action_selection"
android:defaultValue="@string/pref_button_action_disabled_value"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_button_single_press_action_selection_title" />
<ListPreference
@ -45,7 +46,7 @@
android:entries="@array/button_action_options"
android:entryValues="@array/button_action_values"
android:key="button_double_press_action_selection"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:defaultValue="@string/pref_button_action_disabled_value"
android:title="@string/prefs_button_double_press_action_selection_title" />
@ -55,7 +56,7 @@
android:entries="@array/button_action_options"
android:entryValues="@array/button_action_values"
android:key="button_triple_press_action_selection"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:defaultValue="@string/pref_button_action_disabled_value"
android:title="@string/prefs_button_triple_press_action_selection_title" />

View File

@ -1,11 +1,12 @@
<?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">
<ListPreference
android:defaultValue=""
android:entries="@array/pref_zepp_os_apps"
android:entryValues="@array/pref_zepp_os_apps_values"
android:icon="@drawable/ic_smart_button"
android:key="pref_button_action_lower_short"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_title_lower_button_short_press_action" />
</androidx.preference.PreferenceScreen>

View File

@ -1,11 +1,12 @@
<?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">
<ListPreference
android:defaultValue=""
android:entries="@array/pref_zepp_os_apps"
android:entryValues="@array/pref_zepp_os_apps_values"
android:icon="@drawable/ic_smart_button"
android:key="pref_button_action_upper_long"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_title_upper_button_long_press_action" />
</androidx.preference.PreferenceScreen>

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:key="screen_button_actions"
android:icon="@drawable/ic_smart_button"
@ -36,7 +37,7 @@
android:entryValues="@array/button_action_values"
android:key="button_single_press_action_selection"
android:defaultValue="@string/pref_button_action_disabled_value"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_button_single_press_action_selection_title" />
<ListPreference
@ -45,7 +46,7 @@
android:entries="@array/button_action_options"
android:entryValues="@array/button_action_values"
android:key="button_double_press_action_selection"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:defaultValue="@string/pref_button_action_disabled_value"
android:title="@string/prefs_button_double_press_action_selection_title" />
@ -55,7 +56,7 @@
android:entries="@array/button_action_options"
android:entryValues="@array/button_action_values"
android:key="button_triple_press_action_selection"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:defaultValue="@string/pref_button_action_disabled_value"
android:title="@string/prefs_button_triple_press_action_selection_title" />
@ -66,7 +67,7 @@
android:entryValues="@array/button_action_values"
android:key="button_long_press_action_selection"
android:defaultValue="@string/pref_button_action_disabled_value"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_button_long_press_action_selection_title" />
<PreferenceCategory android:title="@string/prefs_button_variable_actions">

View File

@ -1,11 +1,12 @@
<?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">
<ListPreference
android:icon="@drawable/ic_sync"
android:defaultValue="2"
android:entries="@array/pref_casio_connection_duration"
android:entryValues="@array/pref_casio_connection_duration_values"
android:key="connection_duration"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_app_connection_duration" />
</androidx.preference.PreferenceScreen>

View File

@ -1,12 +1,13 @@
<?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">
<ListPreference
android:defaultValue="0"
android:entries="@array/prefs_heartrate_measurement_interval"
android:entryValues="@array/prefs_heartrate_measurement_interval_values"
android:icon="@drawable/ic_heartrate"
android:key="heartrate_measurement_interval"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_title_heartrate_measurement_interval" />
<SwitchPreferenceCompat
android:defaultValue="false"

View File

@ -1,12 +1,13 @@
<?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">
<ListPreference
android:defaultValue="MM/dd/yyyy"
android:icon="@drawable/ic_access_time"
android:entries="@array/dateformats"
android:entryValues="@array/dateformats_values"
android:key="dateformat"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/miband2_prefs_dateformat" />
</androidx.preference.PreferenceScreen>

View File

@ -1,11 +1,12 @@
<?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">
<ListPreference
android:defaultValue="YYYY/MM/DD"
android:entries="@array/dateformats_2"
android:entryValues="@array/dateformats_2_values"
android:icon="@drawable/ic_access_time"
android:key="dateformat"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/miband2_prefs_dateformat" />
</androidx.preference.PreferenceScreen>

View File

@ -1,12 +1,13 @@
<?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">
<ListPreference
android:defaultValue="auto"
android:icon="@drawable/ic_access_time"
android:entries="@array/dateformat_day_month_order_entries"
android:entryValues="@array/dateformat_day_month_order_values"
android:key="dateformat"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/miband2_prefs_dateformat" />
</androidx.preference.PreferenceScreen>

View File

@ -50,7 +50,7 @@
android:entries="@array/device_action_options"
android:entryValues="@array/device_action_values"
android:key="events_forwarding_startnonwear_action_selections"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:defaultValue="@array/empty_array"
android:title="@string/prefs_events_forwarding_action_title" />
<EditTextPreference

View File

@ -17,7 +17,7 @@
android:entries="@array/device_action_options"
android:entryValues="@array/device_action_values"
android:key="events_forwarding_fellsleep_action_selections"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_events_forwarding_action_title" />
<EditTextPreference
android:defaultValue="@string/prefs_events_forwarding_fellsleep_broadcast_default_value"
@ -35,7 +35,7 @@
android:entries="@array/device_action_options"
android:entryValues="@array/device_action_values"
android:key="events_forwarding_wokeup_action_selections"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_events_forwarding_action_title" />
<EditTextPreference
android:defaultValue="@string/prefs_events_forwarding_wokeup_broadcast_default_value"

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:key="screen_disconnect_nofifiction"
@ -15,7 +16,7 @@
android:entries="@array/activate_display_on_lift"
android:entryValues="@array/activate_display_on_lift_values"
android:key="disconnect_notification"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_disconnect_notification" />
<nodomain.freeyourgadget.gadgetbridge.util.XTimePreference

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:icon="@drawable/ic_block"
android:key="screen_do_not_disturb"
@ -17,7 +18,7 @@
android:entries="@array/do_not_disturb_allday"
android:entryValues="@array/mi2_do_not_disturb_values"
android:key="do_not_disturb"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/mi2_prefs_do_not_disturb" />
<nodomain.freeyourgadget.gadgetbridge.util.XTimePreference

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:icon="@drawable/ic_block"
android:key="screen_do_not_disturb"
@ -12,7 +13,7 @@
android:entries="@array/do_not_disturb_allday"
android:entryValues="@array/mi2_do_not_disturb_values"
android:key="do_not_disturb"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/mi2_prefs_do_not_disturb" />
<nodomain.freeyourgadget.gadgetbridge.util.XTimePreference

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:icon="@drawable/ic_block"
android:key="screen_do_not_disturb_no_auto"
@ -12,7 +13,7 @@
android:entries="@array/do_not_disturb_no_auto"
android:entryValues="@array/do_not_disturb_no_auto_values"
android:key="do_not_disturb_no_auto"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/mi2_prefs_do_not_disturb" />
<nodomain.freeyourgadget.gadgetbridge.util.XTimePreference

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:icon="@drawable/ic_block"
android:key="screen_do_not_disturb"
@ -15,7 +16,7 @@
android:entries="@array/mi2_do_not_disturb"
android:entryValues="@array/mi2_do_not_disturb_values"
android:key="do_not_disturb"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/mi2_prefs_do_not_disturb" />
<nodomain.freeyourgadget.gadgetbridge.util.XTimePreference

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:icon="@drawable/ic_block"
android:key="pref_screen_do_not_disturb"
@ -15,7 +16,7 @@
android:entries="@array/do_not_disturb_with_always"
android:entryValues="@array/do_not_disturb_with_always_values"
android:key="do_not_disturb"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/mi2_prefs_do_not_disturb" />
<nodomain.freeyourgadget.gadgetbridge.util.XTimePreference

View File

@ -1,11 +1,12 @@
<?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">
<ListPreference
android:entries="@array/femometer_measurement_mode"
android:entryValues="@array/femometer_measurement_mode_values"
android:defaultValue="normal"
android:icon="@drawable/ic_checklist"
android:key="femometer_measurement_mode"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/femometer_measurement_mode_title" />
</androidx.preference.PreferenceScreen>

View File

@ -1,12 +1,13 @@
<?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">
<ListPreference
android:defaultValue="auto"
android:entries="@array/pref_fitpro_language_options"
android:entryValues="@array/pref_fitpro_language_values"
android:icon="@drawable/ic_language"
android:key="language"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_title_language" />
</androidx.preference.PreferenceScreen>

View File

@ -12,42 +12,42 @@
android:entries="@array/pref_hybridhr_buttonfunctions"
android:entryValues="@array/pref_hybridhr_buttonfunctions_values"
android:key="button_1_function_short"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_title_upper_button_function_short" />
<ListPreference
android:defaultValue="weatherApp"
android:entries="@array/pref_hybridhr_buttonfunctions"
android:entryValues="@array/pref_hybridhr_buttonfunctions_values"
android:key="button_1_function_long"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_title_upper_button_function_long" />
<ListPreference
android:defaultValue="launcherApp"
android:entries="@array/pref_hybridhr_buttonfunctions"
android:entryValues="@array/pref_hybridhr_buttonfunctions_values"
android:key="button_2_function_short"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_title_middle_button_function_short" />
<ListPreference
android:defaultValue="launcherApp"
android:entries="@array/pref_hybridhr_buttonfunctions"
android:entryValues="@array/pref_hybridhr_buttonfunctions_values"
android:key="button_2_function_long"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_title_middle_button_function_long" />
<ListPreference
android:defaultValue="musicApp"
android:entries="@array/pref_hybridhr_buttonfunctions"
android:entryValues="@array/pref_hybridhr_buttonfunctions_values"
android:key="button_3_function_short"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_title_lower_button_function_short" />
<ListPreference
android:defaultValue="musicApp"
android:entries="@array/pref_hybridhr_buttonfunctions"
android:entryValues="@array/pref_hybridhr_buttonfunctions_values"
android:key="button_3_function_long"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_title_lower_button_function_long" />
<Preference
android:selectable="false"

View File

@ -12,21 +12,21 @@
android:entries="@array/pref_hybridhr_buttonfunctions"
android:entryValues="@array/pref_hybridhr_buttonfunctions_values"
android:key="button_1_function_short"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_title_upper_button_function_short" />
<ListPreference
android:defaultValue="weatherApp"
android:entries="@array/pref_hybridhr_buttonfunctions"
android:entryValues="@array/pref_hybridhr_buttonfunctions_values"
android:key="button_1_function_long"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_title_upper_button_function_long" />
<ListPreference
android:defaultValue="commuteApp"
android:entries="@array/pref_hybridhr_buttonfunctions"
android:entryValues="@array/pref_hybridhr_buttonfunctions_values"
android:key="button_2_function_short"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_title_middle_button_function_short" />
<Preference
android:selectable="false"
@ -39,14 +39,14 @@
android:entries="@array/pref_hybridhr_buttonfunctions"
android:entryValues="@array/pref_hybridhr_buttonfunctions_values"
android:key="button_3_function_short"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_title_lower_button_function_short" />
<ListPreference
android:defaultValue="musicApp"
android:entries="@array/pref_hybridhr_buttonfunctions"
android:entryValues="@array/pref_hybridhr_buttonfunctions_values"
android:key="button_3_function_long"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_title_lower_button_function_long" />
<Preference
android:selectable="false"

View File

@ -62,7 +62,7 @@
android:entryValues="@array/galaxy_eqalizer_values"
android:icon="@drawable/ic_equalizer"
android:key="pref_galaxy_buds_equalizer_mode"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_equalizer_preset" />
</PreferenceCategory>
</PreferenceScreen>
@ -87,7 +87,7 @@
android:entryValues="@array/galaxy_touch_options_values"
android:icon="@drawable/ic_touch"
android:key="pref_galaxy_buds_touch_left"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_left" />
<ListPreference
android:dependency="pref_galaxy_buds_lock_touch"
@ -95,7 +95,7 @@
android:entryValues="@array/galaxy_touch_options_values"
android:icon="@drawable/ic_touch"
android:key="pref_galaxy_buds_touch_right"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_right" />
</PreferenceCategory>
</PreferenceScreen>

View File

@ -15,7 +15,7 @@
android:entryValues="@array/galaxy_pro_noise_controls_options_values"
android:icon="@drawable/ic_surround"
android:key="pref_galaxy_buds_2_noise_control"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_noise_control" />
<SeekBarPreference
@ -90,7 +90,7 @@
android:entryValues="@array/galaxy_buds_live_equalizer_values"
android:icon="@drawable/ic_equalizer"
android:key="pref_galaxy_buds_equalizer_mode"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_equalizer_preset" />
<PreferenceScreen
@ -112,7 +112,7 @@
android:entryValues="@array/galaxy_pro_touch_options_values"
android:icon="@drawable/ic_switch_left"
android:key="pref_galaxy_buds_touch_left"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_left" />
<ListPreference
@ -121,7 +121,7 @@
android:entries="@array/galaxy_pro_touch_switch_controls_options"
android:entryValues="@array/galaxy_pro_touch_switch_controls_values"
android:key="pref_galaxy_buds_touch_left_switch"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_switch_control_left" />
<ListPreference
@ -131,7 +131,7 @@
android:entryValues="@array/galaxy_pro_touch_options_values"
android:icon="@drawable/ic_switch_right"
android:key="pref_galaxy_buds_touch_right"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_right" />
<ListPreference
android:defaultValue="0"
@ -139,7 +139,7 @@
android:entries="@array/galaxy_pro_touch_switch_controls_options"
android:entryValues="@array/galaxy_pro_touch_switch_controls_values"
android:key="pref_galaxy_buds_touch_right_switch"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_switch_control_right" />
<SwitchPreferenceCompat

View File

@ -7,7 +7,7 @@
android:entryValues="@array/galaxy_pro_noise_controls_options_values"
android:icon="@drawable/ic_surround"
android:key="pref_galaxy_buds_pro_noise_control"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_noise_control" />
<PreferenceScreen
android:icon="@drawable/ic_hearing"
@ -30,7 +30,7 @@
android:entryValues="@array/galaxy_pro_voice_detect_duration_values"
android:icon="@drawable/ic_timer"
android:key="pref_galaxy_buds_pro_voice_detect_duration"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_voice_detect_duration" />
</PreferenceCategory>
@ -90,7 +90,7 @@
android:entryValues="@array/galaxy_buds_live_equalizer_values"
android:icon="@drawable/ic_equalizer"
android:key="pref_galaxy_buds_equalizer_mode"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_equalizer_preset" />
<PreferenceScreen
@ -112,7 +112,7 @@
android:entryValues="@array/galaxy_pro_touch_options_values"
android:icon="@drawable/ic_switch_left"
android:key="pref_galaxy_buds_touch_left"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_left" />
<ListPreference
@ -121,7 +121,7 @@
android:entries="@array/galaxy_pro_touch_switch_controls_options"
android:entryValues="@array/galaxy_pro_touch_switch_controls_values"
android:key="pref_galaxy_buds_touch_left_switch"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_switch_control_left" />
<ListPreference
@ -131,7 +131,7 @@
android:entryValues="@array/galaxy_pro_touch_options_values"
android:icon="@drawable/ic_switch_right"
android:key="pref_galaxy_buds_touch_right"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_right" />
<ListPreference
android:defaultValue="0"
@ -139,7 +139,7 @@
android:entries="@array/galaxy_pro_touch_switch_controls_options"
android:entryValues="@array/galaxy_pro_touch_switch_controls_values"
android:key="pref_galaxy_buds_touch_right_switch"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_switch_control_right" />
<SwitchPreferenceCompat

View File

@ -1,5 +1,6 @@
<?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">
<SwitchPreferenceCompat
android:defaultValue="false"
@ -15,7 +16,7 @@
android:entryValues="@array/galaxy_buds_live_equalizer_values"
android:icon="@drawable/ic_equalizer"
android:key="pref_galaxy_buds_equalizer_mode"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_equalizer_preset" />
<PreferenceScreen
@ -38,7 +39,7 @@
android:entryValues="@array/galaxy_buds_live_touch_options_values"
android:icon="@drawable/ic_touch"
android:key="pref_galaxy_buds_touch_left"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_left" />
<ListPreference
android:dependency="pref_galaxy_buds_lock_touch"
@ -46,7 +47,7 @@
android:entryValues="@array/galaxy_buds_live_touch_options_values"
android:icon="@drawable/ic_touch"
android:key="pref_galaxy_buds_touch_right"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_right" />
</PreferenceCategory>
</PreferenceScreen>

View File

@ -14,7 +14,7 @@
android:entryValues="@array/galaxy_pro_noise_controls_options_values"
android:icon="@drawable/ic_surround"
android:key="pref_galaxy_buds_pro_noise_control"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_noise_control" />
<ListPreference
@ -24,7 +24,7 @@
android:entryValues="@array/galaxy_pro_anc_level_values"
android:icon="@drawable/ic_surround"
android:key="pref_galaxy_buds_pro_anc_level"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_active_noise_cancelling_level" />
@ -60,7 +60,7 @@
android:entryValues="@array/galaxy_pro_voice_detect_duration_values"
android:icon="@drawable/ic_timer"
android:key="pref_galaxy_buds_pro_voice_detect_duration"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_voice_detect_duration" />
</PreferenceCategory>
@ -121,7 +121,7 @@
android:entryValues="@array/galaxy_buds_live_equalizer_values"
android:icon="@drawable/ic_equalizer"
android:key="pref_galaxy_buds_equalizer_mode"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_equalizer_preset" />
<PreferenceScreen
@ -145,7 +145,7 @@
android:entryValues="@array/galaxy_pro_touch_options_values"
android:icon="@drawable/ic_touch"
android:key="pref_galaxy_buds_touch_left"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_left" />
<ListPreference
@ -155,7 +155,7 @@
android:entryValues="@array/galaxy_pro_touch_switch_controls_values"
android:icon="@drawable/ic_switch_left"
android:key="pref_galaxy_buds_touch_left_switch"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_switch_control_left" />
<ListPreference
@ -165,7 +165,7 @@
android:entryValues="@array/galaxy_pro_touch_options_values"
android:icon="@drawable/ic_touch"
android:key="pref_galaxy_buds_touch_right"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_right" />
<ListPreference
android:defaultValue="0"
@ -174,7 +174,7 @@
android:entryValues="@array/galaxy_pro_touch_switch_controls_values"
android:icon="@drawable/ic_switch_right"
android:key="pref_galaxy_buds_touch_right_switch"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_switch_control_right" />
<SwitchPreferenceCompat

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:icon="@drawable/ic_gps_location"
android:key="pref_header_gps"
@ -15,7 +16,7 @@
android:entries="@array/pref_gps_mode_preset"
android:entryValues="@array/pref_gps_mode_preset_values"
android:key="pref_gps_mode_preset"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_gps_mode_preset" />
<ListPreference
@ -23,7 +24,7 @@
android:entries="@array/pref_gps_band"
android:entryValues="@array/pref_gps_band_values"
android:key="pref_gps_band"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_gps_band" />
<ListPreference
@ -31,7 +32,7 @@
android:entries="@array/pref_gps_combination"
android:entryValues="@array/pref_gps_combination_values"
android:key="pref_gps_combination"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_gps_combination" />
<ListPreference
@ -39,7 +40,7 @@
android:entries="@array/pref_gps_satellite_search"
android:entryValues="@array/pref_gps_satellite_search_values"
android:key="pref_gps_satellite_search"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_gps_satellite_search" />
</PreferenceCategory>

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:icon="@drawable/ic_heartrate"
android:key="heartrate_monitoring_key"
@ -20,7 +21,7 @@
android:entryValues="@array/prefs_heartrate_measurement_interval_values"
android:icon="@drawable/ic_heartrate"
android:key="heartrate_measurement_interval"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_title_heartrate_measurement_interval" />
</PreferenceScreen>
</androidx.preference.PreferenceScreen>

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:icon="@drawable/ic_heartrate"
android:key="heartrate_monitoring_key"
@ -20,7 +21,7 @@
android:entryValues="@array/prefs_heartrate_measurement_interval_values"
android:icon="@drawable/ic_heartrate"
android:key="heartrate_measurement_interval"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_title_heartrate_measurement_interval" />
<!-- Activity Monitoring -->

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:icon="@drawable/ic_heartrate"
android:key="heartrate_monitoring_key"
@ -20,7 +21,7 @@
android:entryValues="@array/prefs_heartrate_measurement_interval_values"
android:icon="@drawable/ic_heartrate"
android:key="heartrate_measurement_interval"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_title_heartrate_measurement_interval" />
<!-- Activity Monitoring -->
@ -50,7 +51,7 @@
android:entryValues="@array/prefs_miband_heartrate_alert_threshold_values"
android:icon="@drawable/ic_heartrate"
android:key="heartrate_alert_threshold"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_heartrate_alert_threshold" />
<!-- Stress Monitoring -->

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:icon="@drawable/ic_heartrate"
android:key="pref_screen_heartrate_monitoring"
@ -36,7 +37,7 @@
android:entryValues="@array/prefs_heartrate_measurement_interval_values"
android:icon="@drawable/ic_heartrate"
android:key="heartrate_measurement_interval"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_title_heartrate_measurement_interval" />
</PreferenceCategory>
@ -62,7 +63,7 @@
android:entryValues="@array/prefs_miband_heartrate_high_alert_threshold_with_off_values"
android:icon="@drawable/ic_heartrate"
android:key="heartrate_alert_threshold"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_heartrate_alert_high_threshold" />
<ListPreference
@ -71,7 +72,7 @@
android:entryValues="@array/prefs_miband_heartrate_low_alert_threshold_values"
android:icon="@drawable/ic_heartrate"
android:key="heartrate_alert_low_threshold"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_heartrate_alert_low_threshold" />
<ListPreference
@ -80,7 +81,7 @@
android:entryValues="@array/prefs_miband_heartrate_high_active_alert_threshold_with_off_values"
android:icon="@drawable/ic_heartrate"
android:key="heartrate_alert_active_high_threshold"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_heartrate_alert_active_high_threshold" />
</PreferenceCategory>
@ -125,7 +126,7 @@
android:entries="@array/prefs_spo2_alert_threshold"
android:entryValues="@array/prefs_spo2_alert_threshold_values"
android:key="spo2_low_alert_threshold"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_spo2_alert_threshold" />
</PreferenceCategory>
</PreferenceScreen>

View File

@ -13,7 +13,7 @@
android:entryValues="@array/pref_language_all_values"
android:icon="@drawable/ic_language"
android:key="voice_service_language"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_title_language" />
<PreferenceCategory

View File

@ -1,11 +1,12 @@
<?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">
<ListPreference
android:icon="@drawable/ic_language"
android:defaultValue="auto"
android:entries="@array/pref_language_all"
android:entryValues="@array/pref_language_all_values"
android:key="language"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_title_language" />
</androidx.preference.PreferenceScreen>

View File

@ -1,11 +1,12 @@
<?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">
<ListPreference
android:defaultValue="0"
android:entries="@array/lefun_interface_language_names"
android:entryValues="@array/lefun_interface_language_values"
android:icon="@drawable/ic_language"
android:key="language"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/lefun_prefs_interface_language_title" />
</androidx.preference.PreferenceScreen>

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:icon="@drawable/ic_arrow_upward"
android:key="screen_liftwrist_display"
@ -14,7 +15,7 @@
android:entries="@array/activate_display_on_lift"
android:entryValues="@array/activate_display_on_lift_values"
android:key="activate_display_on_lift_wrist"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/mi2_prefs_activate_display_on_lift" />
<nodomain.freeyourgadget.gadgetbridge.util.XTimePreference

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:icon="@drawable/ic_arrow_upward"
android:key="screen_liftwrist_display"
@ -15,7 +16,7 @@
android:entries="@array/do_not_disturb_no_auto"
android:entryValues="@array/do_not_disturb_no_auto_values"
android:key="activate_display_on_lift_wrist"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/mi2_prefs_activate_display_on_lift" />
<nodomain.freeyourgadget.gadgetbridge.util.XTimePreference

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:icon="@drawable/ic_arrow_upward"
android:key="pref_screen_lift_wrist"
@ -14,7 +15,7 @@
android:entries="@array/activate_display_on_lift"
android:entryValues="@array/activate_display_on_lift_values"
android:key="activate_display_on_lift_wrist"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/mi2_prefs_activate_display_on_lift" />
<ListPreference
@ -22,7 +23,7 @@
android:entries="@array/activate_display_on_lift_sensitivity"
android:entryValues="@array/activate_display_on_lift_sensitivity_values"
android:key="display_on_lift_sensitivity"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_activate_display_on_lift_sensitivity" />
<nodomain.freeyourgadget.gadgetbridge.util.XTimePreference

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:icon="@drawable/ic_arrow_upward"
android:key="pref_screen_lift_wrist"
@ -14,7 +15,7 @@
android:entries="@array/activate_display_on_lift_with_smart"
android:entryValues="@array/activate_display_on_lift_with_smart_values"
android:key="activate_display_on_lift_wrist"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/mi2_prefs_activate_display_on_lift" />
<ListPreference
@ -22,7 +23,7 @@
android:entries="@array/activate_display_on_lift_sensitivity"
android:entryValues="@array/activate_display_on_lift_sensitivity_values"
android:key="display_on_lift_sensitivity"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_activate_display_on_lift_sensitivity" />
<nodomain.freeyourgadget.gadgetbridge.util.XTimePreference

View File

@ -1,11 +1,12 @@
<?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">
<ListPreference
android:defaultValue="@string/p_dateformat_time"
android:icon="@drawable/ic_access_time"
android:entries="@array/mi2_dateformats"
android:entryValues="@array/mi2_dateformats_values"
android:key="mi2_dateformat"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/miband2_prefs_dateformat" />
</androidx.preference.PreferenceScreen>

View File

@ -1,10 +1,11 @@
<?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">
<ListPreference
android:entries="@array/moondrop_equalizer_preset_names"
android:entryValues="@array/moondrop_equalizer_preset_values"
android:icon="@drawable/ic_graphic_eq"
android:key="pref_moondrop_equalizer_preset"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_equalizer_preset" />
</androidx.preference.PreferenceScreen>

View File

@ -1,19 +1,20 @@
<?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">
<PreferenceCategory android:title="@string/moondrop_touch_action_play_pause">
<ListPreference
android:entries="@array/moondrop_touch_earbud_names"
android:entryValues="@array/moondrop_touch_earbud_values"
android:icon="@drawable/ic_hearing"
android:key="pref_moondrop_touch_play_pause_earbud"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/moondrop_touch_earbud" />
<ListPreference
android:entries="@array/moondrop_touch_trigger_names"
android:entryValues="@array/moondrop_touch_trigger_values"
android:icon="@drawable/ic_touch"
android:key="pref_moondrop_touch_play_pause_trigger"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/moondrop_touch_trigger" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/pref_media_previous">
@ -22,14 +23,14 @@
android:entryValues="@array/moondrop_touch_earbud_values"
android:icon="@drawable/ic_hearing"
android:key="pref_moondrop_touch_media_prev_earbud"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/moondrop_touch_earbud" />
<ListPreference
android:entries="@array/moondrop_touch_trigger_names"
android:entryValues="@array/moondrop_touch_trigger_values"
android:icon="@drawable/ic_touch"
android:key="pref_moondrop_touch_media_prev_trigger"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/moondrop_touch_trigger" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/pref_media_next">
@ -38,14 +39,14 @@
android:entryValues="@array/moondrop_touch_earbud_values"
android:icon="@drawable/ic_hearing"
android:key="pref_moondrop_touch_media_next_earbud"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/moondrop_touch_earbud" />
<ListPreference
android:entries="@array/moondrop_touch_trigger_names"
android:entryValues="@array/moondrop_touch_trigger_values"
android:icon="@drawable/ic_touch"
android:key="pref_moondrop_touch_media_next_trigger"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/moondrop_touch_trigger" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/moondrop_touch_action_call_pick_hang">
@ -54,14 +55,14 @@
android:entryValues="@array/moondrop_touch_earbud_values"
android:icon="@drawable/ic_hearing"
android:key="pref_moondrop_touch_call_pick_hang_earbud"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/moondrop_touch_earbud" />
<ListPreference
android:entries="@array/moondrop_touch_trigger_names"
android:entryValues="@array/moondrop_touch_trigger_values"
android:icon="@drawable/ic_touch"
android:key="pref_moondrop_touch_call_pick_hang_trigger"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/moondrop_touch_trigger" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/moondrop_touch_action_call_start">
@ -70,14 +71,14 @@
android:entryValues="@array/moondrop_touch_earbud_values"
android:icon="@drawable/ic_hearing"
android:key="pref_moondrop_touch_call_start_earbud"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/moondrop_touch_earbud" />
<ListPreference
android:entries="@array/moondrop_touch_trigger_names"
android:entryValues="@array/moondrop_touch_trigger_values"
android:icon="@drawable/ic_touch"
android:key="pref_moondrop_touch_call_start_trigger"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/moondrop_touch_trigger" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/moondrop_touch_action_assistant">
@ -86,14 +87,14 @@
android:entryValues="@array/moondrop_touch_earbud_values"
android:icon="@drawable/ic_hearing"
android:key="pref_moondrop_touch_assistant_earbud"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/moondrop_touch_earbud" />
<ListPreference
android:entries="@array/moondrop_touch_trigger_names"
android:entryValues="@array/moondrop_touch_trigger_values"
android:icon="@drawable/ic_touch"
android:key="pref_moondrop_touch_assistant_trigger"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/moondrop_touch_trigger" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/moondrop_touch_action_anc_mode">
@ -102,14 +103,14 @@
android:entryValues="@array/moondrop_touch_earbud_values"
android:icon="@drawable/ic_hearing"
android:key="pref_moondrop_touch_anc_mode_earbud"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/moondrop_touch_earbud" />
<ListPreference
android:entries="@array/moondrop_touch_trigger_names"
android:entryValues="@array/moondrop_touch_trigger_values"
android:icon="@drawable/ic_touch"
android:key="pref_moondrop_touch_anc_mode_trigger"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/moondrop_touch_trigger" />
</PreferenceCategory>
</androidx.preference.PreferenceScreen>

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:icon="@drawable/ic_brightness_2"
@ -16,7 +17,7 @@
android:entries="@array/mi3_night_mode"
android:entryValues="@array/mi3_night_mode_values"
android:key="night_mode"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/mi3_prefs_night_mode" />
<nodomain.freeyourgadget.gadgetbridge.util.XTimePreference

View File

@ -13,6 +13,6 @@
android:entryValues="@array/nothing_ear1_audio_mode_values"
android:entries="@array/nothing_ear1_audio_mode_names"
android:key="pref_nothing_audiomode"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/nothing_prefs_audiomode_title" />
</androidx.preference.PreferenceScreen>

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:icon="@drawable/ic_voice"
android:key="pref_screen_offline_voice"
@ -12,7 +13,7 @@
android:entryValues="@array/pref_language_all_values"
android:icon="@drawable/ic_language"
android:key="offline_voice_language"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_title_language" />
<SwitchPreferenceCompat

View File

@ -10,7 +10,7 @@
android:entries="@array/pebble_activitytracker"
android:entryValues="@array/pebble_activitytracker_values"
android:key="pebble_activitytracker"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_title_pebble_activitytracker"
app:iconSpaceReserved="false" />
<SwitchPreferenceCompat

View File

@ -6,7 +6,7 @@
android:entries="@array/pebble_privacymode"
android:entryValues="@array/pebble_privacymode_values"
android:key="pebble_pref_privacy_mode"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_title_pebble_privacy_mode"
app:iconSpaceReserved="false" />
<SwitchPreferenceCompat

View File

@ -1,11 +1,12 @@
<?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">
<ListPreference
android:icon="@drawable/ic_power_settings_new"
android:defaultValue="0"
android:entries="@array/power_mode"
android:entryValues="@array/power_mode_values"
android:key="power_mode"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/power_mode_title" />
</androidx.preference.PreferenceScreen>

View File

@ -1,11 +1,12 @@
<?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">
<ListPreference
android:defaultValue="5"
android:entries="@array/screen_timeout"
android:entryValues="@array/screen_timeout_values"
android:key="screen_timeout"
android:icon="@drawable/ic_hourglass_empty"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_screen_timeout" />
</androidx.preference.PreferenceScreen>

View File

@ -1,12 +1,13 @@
<?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">
<ListPreference
android:icon="@drawable/ic_screen_rotation"
android:defaultValue="horizontal"
android:entries="@array/orientation"
android:entryValues="@array/orientation_values"
android:key="screen_orientation"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_screen_orientation" />
</androidx.preference.PreferenceScreen>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<com.bytehamster.lib.preferencesearch.SearchPreference
android:key="searchPreference"
app:isPreferenceVisible="false" />
</androidx.preference.PreferenceScreen>

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:icon="@drawable/ic_access_time"
android:key="prefs_sleep_time"
@ -16,7 +17,7 @@
android:entries="@array/do_not_disturb_no_auto"
android:entryValues="@array/do_not_disturb_no_auto_values"
android:key="prefs_enable_sleep_time"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_sleep_time" />
<nodomain.freeyourgadget.gadgetbridge.util.XTimePreference

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceCategory
android:key="pref_key_header_sony_ambient_sound_control"
android:title="@string/pref_header_sony_ambient_sound_control">
@ -10,7 +11,7 @@
android:entryValues="@array/sony_ambient_sound_control_values"
android:icon="@drawable/ic_hearing"
android:key="pref_sony_ambient_sound_control"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/sony_ambient_sound" />
<!-- [0, 19], which maps to [1, 20] on the device, as we can't configure the min on the current API level -->

View File

@ -1,11 +1,12 @@
<?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">
<ListPreference
android:defaultValue="nc_as_off"
android:entries="@array/sony_ambient_sound_control_button_mode_names"
android:entryValues="@array/sony_ambient_sound_control_button_mode_values"
android:icon="@drawable/ic_touch"
android:key="pref_sony_ambient_sound_control_button_mode"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/sony_ambient_sound_control_button_modes" />
</androidx.preference.PreferenceScreen>

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceCategory
android:key="pref_key_header_sony_ambient_sound_control"
android:title="@string/pref_header_sony_ambient_sound_control">
@ -10,7 +11,7 @@
android:entryValues="@array/sony_ambient_sound_control_wind_noise_reduction_values"
android:icon="@drawable/ic_hearing"
android:key="pref_sony_ambient_sound_control"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/sony_ambient_sound" />
<!-- [0, 19], which maps to [1, 20] on the device, as we can't configure the min on the current API level -->

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:icon="@drawable/ic_help_outline"
android:key="pref_screen_sony_button_mode_help"
@ -73,7 +74,7 @@
android:entryValues="@array/sony_wfsp800n_button_mode_values"
android:icon="@drawable/ic_touch"
android:key="pref_sony_button_mode_left"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/sony_button_mode_left" />
<ListPreference
@ -82,6 +83,6 @@
android:entryValues="@array/sony_wfsp800n_button_mode_values"
android:icon="@drawable/ic_touch"
android:key="pref_sony_button_mode_right"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/sony_button_mode_right" />
</androidx.preference.PreferenceScreen>

View File

@ -1,11 +1,12 @@
<?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">
<ListPreference
android:defaultValue="off"
android:entries="@array/sony_equalizer_mode_names"
android:entryValues="@array/sony_equalizer_mode_values"
android:icon="@drawable/ic_graphic_eq"
android:key="pref_sony_equalizer_mode"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/sony_equalizer" />
</androidx.preference.PreferenceScreen>

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:icon="@drawable/ic_graphic_eq"
@ -13,7 +14,7 @@
android:entryValues="@array/sony_equalizer_mode_values"
android:icon="@drawable/ic_graphic_eq"
android:key="pref_sony_equalizer_mode"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/sony_equalizer" />
<SeekBarPreference

View File

@ -8,7 +8,6 @@
android:entryValues="@array/sony_protocol_version_values"
android:icon="@drawable/ic_developer_mode"
android:key="pref_protocol_version"
android:summary="%s"
android:title="@string/protocol_version"
app:useSimpleSummaryProvider="true" />

View File

@ -1,12 +1,13 @@
<?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">
<ListPreference
android:defaultValue="off"
android:entries="@array/sony_quick_access_names"
android:entryValues="@array/sony_quick_access_values"
android:icon="@drawable/ic_filter_2"
android:key="pref_sony_quick_access_double_tap"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/sony_quick_access_double_tap" />
<ListPreference
@ -15,6 +16,6 @@
android:entryValues="@array/sony_quick_access_values"
android:icon="@drawable/ic_filter_3"
android:key="pref_sony_quick_access_triple_tap"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/sony_quick_access_triple_tap" />
</androidx.preference.PreferenceScreen>

View File

@ -1,11 +1,12 @@
<?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">
<ListPreference
android:defaultValue="off"
android:entries="@array/sony_sound_position_names"
android:entryValues="@array/sony_sound_position_values"
android:icon="@drawable/ic_switch_left"
android:key="pref_sony_sound_position"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/sony_sound_position" />
</androidx.preference.PreferenceScreen>

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceScreen
android:icon="@drawable/ic_voice"
@ -26,7 +27,7 @@
android:entries="@array/sony_speak_to_chat_voice_sensitivity_names"
android:entryValues="@array/sony_speak_to_chat_voice_sensitivity_values"
android:key="pref_sony_speak_to_chat_sensitivity"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/sony_speak_to_chat_sensitivity" />
<SwitchPreferenceCompat
@ -44,7 +45,7 @@
android:entryValues="@array/sony_speak_to_chat_voice_timeout_values"
android:icon="@drawable/ic_timer"
android:key="pref_sony_speak_to_chat_timeout"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/sony_speak_to_chat_timeout" />
</PreferenceCategory>
</PreferenceScreen>

View File

@ -1,11 +1,12 @@
<?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">
<ListPreference
android:defaultValue="off"
android:entries="@array/sony_surround_mode_names"
android:entryValues="@array/sony_surround_mode_values"
android:icon="@drawable/ic_surround"
android:key="pref_sony_surround_mode"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/sony_surround_mode" />
</androidx.preference.PreferenceScreen>

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceCategory
android:key="pref_key_header_soundcore_ambient_sound_control"
android:title="@string/pref_header_sony_ambient_sound_control">
@ -10,7 +11,7 @@
android:entryValues="@array/sony_ambient_sound_control_values"
android:icon="@drawable/ic_hearing"
android:key="pref_soundcore_ambient_sound_control"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/sony_ambient_sound" />
<SwitchPreferenceCompat

View File

@ -1,5 +1,6 @@
<?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">
<SwitchPreferenceCompat
android:defaultValue="true"
android:icon="@drawable/ic_voice"
@ -12,7 +13,7 @@
android:entryValues="@array/soundcore_button_brightness_values"
android:icon="@drawable/ic_wb_sunny"
android:key="pref_soundcore_button_brightness"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/soundcore_button_brightness" />
<ListPreference
android:defaultValue="3"
@ -20,6 +21,6 @@
android:entryValues="@array/soundcore_auto_power_off_values"
android:icon="@drawable/ic_power_settings_new"
android:key="pref_soundcore_auto_power_off"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_wena3_auto_power_off_item" />
</androidx.preference.PreferenceScreen>

View File

@ -22,7 +22,7 @@
android:entryValues="@array/soundcore_equalizer_preset_values"
android:icon="@drawable/ic_equalizer"
android:key="pref_soundcore_equalizer_preset"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/soundcore_equalizer_preset" />
<PreferenceScreen
android:persistent="false"
@ -36,7 +36,7 @@
android:entryValues="@array/soundcore_equalizer_direction_values"
android:icon="@drawable/ic_switch_left"
android:key="pref_soundcore_equalizer_direction"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/soundcore_equalizer_direction" />
<Preference
android:persistent="false"
@ -51,7 +51,7 @@
android:entryValues="@array/soundcore_equalizer_freq_values"
android:icon="@drawable/ic_hearing"
android:key="pref_soundcore_equalizer_band1_freq"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/soundcore_equalizer_frequency" />
<SeekBarPreference
android:defaultValue="60"
@ -68,7 +68,7 @@
android:entryValues="@array/soundcore_equalizer_freq_values"
android:icon="@drawable/ic_hearing"
android:key="pref_soundcore_equalizer_band2_freq"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/soundcore_equalizer_frequency" />
<SeekBarPreference
android:defaultValue="60"
@ -85,7 +85,7 @@
android:entryValues="@array/soundcore_equalizer_freq_values"
android:icon="@drawable/ic_hearing"
android:key="pref_soundcore_equalizer_band3_freq"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/soundcore_equalizer_frequency" />
<SeekBarPreference
android:defaultValue="60"
@ -102,7 +102,7 @@
android:entryValues="@array/soundcore_equalizer_freq_values"
android:icon="@drawable/ic_hearing"
android:key="pref_soundcore_equalizer_band4_freq"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/soundcore_equalizer_frequency" />
<SeekBarPreference
android:defaultValue="60"
@ -119,7 +119,7 @@
android:entryValues="@array/soundcore_equalizer_freq_values"
android:icon="@drawable/ic_hearing"
android:key="pref_soundcore_equalizer_band5_freq"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/soundcore_equalizer_frequency" />
<SeekBarPreference
android:defaultValue="60"
@ -136,7 +136,7 @@
android:entryValues="@array/soundcore_equalizer_freq_values"
android:icon="@drawable/ic_hearing"
android:key="pref_soundcore_equalizer_band6_freq"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/soundcore_equalizer_frequency" />
<SeekBarPreference
android:defaultValue="60"
@ -153,7 +153,7 @@
android:entryValues="@array/soundcore_equalizer_freq_values"
android:icon="@drawable/ic_hearing"
android:key="pref_soundcore_equalizer_band7_freq"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/soundcore_equalizer_frequency" />
<SeekBarPreference
android:defaultValue="60"
@ -170,7 +170,7 @@
android:entryValues="@array/soundcore_equalizer_freq_values"
android:icon="@drawable/ic_hearing"
android:key="pref_soundcore_equalizer_band8_freq"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/soundcore_equalizer_frequency" />
<SeekBarPreference
android:defaultValue="60"
@ -187,7 +187,7 @@
android:entryValues="@array/soundcore_equalizer_freq_values"
android:icon="@drawable/ic_hearing"
android:key="pref_soundcore_equalizer_band9_freq"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/soundcore_equalizer_frequency" />
<SeekBarPreference
android:defaultValue="60"

View File

@ -1,5 +1,6 @@
<?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">
<PreferenceCategory android:title="@string/single_tap">
<SwitchPreferenceCompat
android:defaultValue="false"
@ -15,7 +16,7 @@
android:entryValues="@array/soundcore_button_function_values"
android:icon="@drawable/ic_touch"
android:key="pref_soundcore_control_single_tap_action_left"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_left" />
<ListPreference
android:dependency="pref_soundcore_control_single_tap_disabled"
@ -23,7 +24,7 @@
android:entryValues="@array/soundcore_button_function_values"
android:icon="@drawable/ic_touch"
android:key="pref_soundcore_control_single_tap_action_right"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_right" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/double_tap">
@ -41,7 +42,7 @@
android:entryValues="@array/soundcore_button_function_values"
android:icon="@drawable/ic_touch"
android:key="pref_soundcore_control_double_tap_action_left"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_left" />
<ListPreference
android:dependency="pref_soundcore_control_double_tap_disabled"
@ -49,7 +50,7 @@
android:entryValues="@array/soundcore_button_function_values"
android:icon="@drawable/ic_touch"
android:key="pref_soundcore_control_double_tap_action_right"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_right" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/triple_tap">
@ -67,7 +68,7 @@
android:entryValues="@array/soundcore_button_function_values"
android:icon="@drawable/ic_touch"
android:key="pref_soundcore_control_triple_tap_action_left"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_left" />
<ListPreference
android:dependency="pref_soundcore_control_triple_tap_disabled"
@ -75,7 +76,7 @@
android:entryValues="@array/soundcore_button_function_values"
android:icon="@drawable/ic_touch"
android:key="pref_soundcore_control_triple_tap_action_right"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_right" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/long_press">
@ -93,7 +94,7 @@
android:entryValues="@array/soundcore_button_function_values"
android:icon="@drawable/ic_touch"
android:key="pref_soundcore_control_long_press_action_left"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_left" />
<ListPreference
android:dependency="pref_soundcore_control_long_press_disabled"
@ -101,7 +102,7 @@
android:entryValues="@array/soundcore_button_function_values"
android:icon="@drawable/ic_touch"
android:key="pref_soundcore_control_long_press_action_right"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/prefs_right" />
</PreferenceCategory>
</androidx.preference.PreferenceScreen>

View File

@ -1,12 +1,13 @@
<?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">
<ListPreference
android:defaultValue="@string/p_timeformat_auto"
android:entries="@array/pref_timeformat_entries"
android:entryValues="@array/pref_timeformat_values"
android:icon="@drawable/ic_access_time"
android:key="timeformat"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/pref_title_timeformat" />
</androidx.preference.PreferenceScreen>

View File

@ -24,7 +24,7 @@
android:entries="@array/vibration_profile"
android:entryValues="@array/vibration_profile_values"
android:key="huami_vibration_profile_app_alerts"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/miband_prefs_vibration" />
<EditTextPreference
@ -55,7 +55,7 @@
android:entries="@array/vibration_profile"
android:entryValues="@array/vibration_profile_values"
android:key="huami_vibration_profile_incoming_call"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/miband_prefs_vibration" />
<EditTextPreference
@ -86,7 +86,7 @@
android:entries="@array/vibration_profile"
android:entryValues="@array/vibration_profile_values"
android:key="huami_vibration_profile_incoming_sms"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/miband_prefs_vibration" />
<EditTextPreference
@ -117,7 +117,7 @@
android:entries="@array/vibration_profile"
android:entryValues="@array/vibration_profile_values"
android:key="huami_vibration_profile_goal_notification"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/miband_prefs_vibration" />
<EditTextPreference
@ -148,7 +148,7 @@
android:entries="@array/vibration_profile"
android:entryValues="@array/vibration_profile_values"
android:key="huami_vibration_profile_alarm"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/miband_prefs_vibration" />
<EditTextPreference
@ -179,7 +179,7 @@
android:entries="@array/vibration_profile"
android:entryValues="@array/vibration_profile_values"
android:key="huami_vibration_profile_idle_alerts"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/miband_prefs_vibration" />
<EditTextPreference
@ -210,7 +210,7 @@
android:entries="@array/vibration_profile"
android:entryValues="@array/vibration_profile_values"
android:key="huami_vibration_profile_event_reminder"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/miband_prefs_vibration" />
<EditTextPreference
@ -241,7 +241,7 @@
android:entries="@array/vibration_profile"
android:entryValues="@array/vibration_profile_values"
android:key="huami_vibration_profile_find_band"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/miband_prefs_vibration" />
<EditTextPreference
@ -272,7 +272,7 @@
android:entries="@array/vibration_profile"
android:entryValues="@array/vibration_profile_values"
android:key="huami_vibration_profile_todo_list"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/miband_prefs_vibration" />
<EditTextPreference
@ -303,7 +303,7 @@
android:entries="@array/vibration_profile"
android:entryValues="@array/vibration_profile_values"
android:key="huami_vibration_profile_schedule"
android:summary="%s"
app:useSimpleSummaryProvider="true"
android:title="@string/miband_prefs_vibration" />
<EditTextPreference

Some files were not shown because too many files have changed in this diff Show More