1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-12-01 06:22:55 +01:00

Device settings: use ArrayList instead of rigid int[]

This commit is contained in:
Daniel Dakhno 2024-03-05 00:55:12 +01:00 committed by José Rebelo
parent 8e6571d354
commit b30b9083d0

View File

@ -35,6 +35,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.Objects; import java.util.Objects;
@ -1018,44 +1019,61 @@ public class DeviceSpecificSettingsFragment extends AbstractPreferenceFragment i
} }
} }
static private void addElementsToList(ArrayList<Integer> list, int[]... elements){
for(int[] array : elements){
for(int item : array){
list.add(item);
}
}
}
static DeviceSpecificSettingsFragment newInstance(GBDevice device, DeviceSettingsActivity.MENU_ENTRY_POINTS applicationSpecificSettings) { static DeviceSpecificSettingsFragment newInstance(GBDevice device, DeviceSettingsActivity.MENU_ENTRY_POINTS applicationSpecificSettings) {
final DeviceCoordinator coordinator = device.getDeviceCoordinator(); final DeviceCoordinator coordinator = device.getDeviceCoordinator();
int[] supportedSettings = new int[0]; ArrayList<Integer> supportedSettings = new ArrayList<>();
String[] supportedLanguages = null; String[] supportedLanguages = null;
if (applicationSpecificSettings.equals(DeviceSettingsActivity.MENU_ENTRY_POINTS.AUTH_SETTINGS)) { //auth settings screen if (applicationSpecificSettings.equals(DeviceSettingsActivity.MENU_ENTRY_POINTS.AUTH_SETTINGS)) { //auth settings screen
supportedSettings = ArrayUtils.insert(0, supportedSettings, coordinator.getSupportedDeviceSpecificAuthenticationSettings()); addElementsToList(supportedSettings, coordinator.getSupportedDeviceSpecificAuthenticationSettings());
supportedSettings = ArrayUtils.addAll(supportedSettings, R.xml.devicesettings_pairingkey_explanation); supportedSettings.add(R.xml.devicesettings_pairingkey_explanation);
if (device.getType() == DeviceType.MIBAND6) { // miband6 might require new protocol and people do not know what to do, hint them: if (device.getType() == DeviceType.MIBAND6) { // miband6 might require new protocol and people do not know what to do, hint them:
supportedSettings = ArrayUtils.addAll(supportedSettings, R.xml.devicesettings_miband6_new_protocol); supportedSettings.add(R.xml.devicesettings_miband6_new_protocol);
supportedSettings = ArrayUtils.addAll(supportedSettings, R.xml.devicesettings_miband6_new_auth_protocol_explanation); supportedSettings.add(R.xml.devicesettings_miband6_new_auth_protocol_explanation);
} }
} else { //device/application settings } else { //device/application settings
supportedSettings = ArrayUtils.insert(0, supportedSettings, coordinator.getSupportedDeviceSpecificSettings(device));
supportedLanguages = coordinator.getSupportedLanguageSettings(device); supportedLanguages = coordinator.getSupportedLanguageSettings(device);
if (supportedLanguages != null) { if (supportedLanguages != null) {
supportedSettings = ArrayUtils.insert(0, supportedSettings, R.xml.devicesettings_language_generic); supportedSettings.add(R.xml.devicesettings_language_generic);
} }
addElementsToList(supportedSettings, coordinator.getSupportedDeviceSpecificSettings(device));
final int[] supportedAuthSettings = coordinator.getSupportedDeviceSpecificAuthenticationSettings(); final int[] supportedAuthSettings = coordinator.getSupportedDeviceSpecificAuthenticationSettings();
if (supportedAuthSettings != null && supportedAuthSettings.length > 0) { if (supportedAuthSettings != null && supportedAuthSettings.length > 0) {
supportedSettings = ArrayUtils.add(supportedSettings, R.xml.devicesettings_header_authentication); supportedSettings.add(R.xml.devicesettings_header_authentication);
supportedSettings = ArrayUtils.addAll(supportedSettings, supportedAuthSettings); addElementsToList(supportedSettings, supportedAuthSettings);
} }
supportedSettings = ArrayUtils.insert(0, supportedSettings, coordinator.getSupportedDeviceSpecificConnectionSettings()); addElementsToList(
supportedSettings = ArrayUtils.addAll(supportedSettings, coordinator.getSupportedDeviceSpecificApplicationSettings()); supportedSettings,
coordinator.getSupportedDeviceSpecificConnectionSettings(),
coordinator.getSupportedDeviceSpecificApplicationSettings());
if (coordinator.supportsActivityTracking()) { if (coordinator.supportsActivityTracking()) {
supportedSettings = ArrayUtils.addAll(supportedSettings, R.xml.devicesettings_activity_info_header); supportedSettings.addAll(Arrays.asList(
supportedSettings = ArrayUtils.addAll(supportedSettings, R.xml.devicesettings_chartstabs); R.xml.devicesettings_activity_info_header,
supportedSettings = ArrayUtils.addAll(supportedSettings, R.xml.devicesettings_device_card_activity_card_preferences); R.xml.devicesettings_chartstabs,
R.xml.devicesettings_device_card_activity_card_preferences
));
} }
supportedSettings = ArrayUtils.add(supportedSettings, R.xml.devicesettings_settings_third_party_apps); supportedSettings.add(R.xml.devicesettings_settings_third_party_apps);
}
int[] supportedSettingsInts = new int[supportedSettings.size()];
for(int i = 0; i < supportedSettings.size(); i++){
supportedSettingsInts[i] = supportedSettings.get(i);
} }
final DeviceSpecificSettingsCustomizer deviceSpecificSettingsCustomizer = coordinator.getDeviceSpecificSettingsCustomizer(device); final DeviceSpecificSettingsCustomizer deviceSpecificSettingsCustomizer = coordinator.getDeviceSpecificSettingsCustomizer(device);
final String settingsFileSuffix = device.getAddress(); final String settingsFileSuffix = device.getAddress();
final DeviceSpecificSettingsFragment fragment = new DeviceSpecificSettingsFragment(); final DeviceSpecificSettingsFragment fragment = new DeviceSpecificSettingsFragment();
fragment.setSettingsFileSuffix(settingsFileSuffix, supportedSettings, supportedLanguages); fragment.setSettingsFileSuffix(settingsFileSuffix, supportedSettingsInts, supportedLanguages);
fragment.setDeviceSpecificSettingsCustomizer(deviceSpecificSettingsCustomizer); fragment.setDeviceSpecificSettingsCustomizer(deviceSpecificSettingsCustomizer);
fragment.setDevice(device); fragment.setDevice(device);