use of net.osmand.plus.settings.backend.preferences.BooleanPreference in project Osmand by osmandapp.
the class BooleanPreferenceBottomSheet method createMenuItems.
@Override
public void createMenuItems(Bundle savedInstanceState) {
final OsmandApplication app = getMyApplication();
if (app == null) {
return;
}
final SwitchPreferenceEx switchPreference = getSwitchPreferenceEx();
if (switchPreference == null) {
return;
}
OsmandPreference preference = app.getSettings().getPreference(switchPreference.getKey());
if (!(preference instanceof BooleanPreference)) {
return;
}
Context themedCtx = UiUtilities.getThemedContext(app, nightMode);
String title = switchPreference.getTitle().toString();
items.add(new TitleItem(title));
final BooleanPreference pref = (BooleanPreference) preference;
CharSequence summaryOn = switchPreference.getSummaryOn();
CharSequence summaryOff = switchPreference.getSummaryOff();
final String on = summaryOn == null || summaryOn.toString().isEmpty() ? getString(R.string.shared_string_enabled) : summaryOn.toString();
final String off = summaryOff == null || summaryOff.toString().isEmpty() ? getString(R.string.shared_string_disabled) : summaryOff.toString();
final int activeColor = AndroidUtils.resolveAttribute(themedCtx, R.attr.active_color_basic);
final int disabledColor = AndroidUtils.resolveAttribute(themedCtx, android.R.attr.textColorSecondary);
boolean checked = switchPreference.isChecked();
final BottomSheetItemWithCompoundButton[] preferenceBtn = new BottomSheetItemWithCompoundButton[1];
preferenceBtn[0] = (BottomSheetItemWithCompoundButton) new BottomSheetItemWithCompoundButton.Builder().setChecked(checked).setTitle(checked ? on : off).setTitleColorId(checked ? activeColor : disabledColor).setCustomView(getCustomButtonView(app, getAppMode(), checked, nightMode)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean newValue = !switchPreference.isChecked();
Fragment targetFragment = getTargetFragment();
if (targetFragment instanceof OnConfirmPreferenceChange) {
ApplyQueryType applyQueryType = getApplyQueryType();
if (applyQueryType == ApplyQueryType.SNACK_BAR) {
applyQueryType = ApplyQueryType.NONE;
}
OnConfirmPreferenceChange confirmationInterface = (OnConfirmPreferenceChange) targetFragment;
if (confirmationInterface.onConfirmPreferenceChange(switchPreference.getKey(), newValue, applyQueryType)) {
switchPreference.setChecked(newValue);
preferenceBtn[0].setTitle(newValue ? on : off);
preferenceBtn[0].setChecked(newValue);
preferenceBtn[0].setTitleColorId(newValue ? activeColor : disabledColor);
updateCustomButtonView(app, getAppMode(), v, newValue, nightMode);
if (targetFragment instanceof OnPreferenceChanged) {
((OnPreferenceChanged) targetFragment).onPreferenceChanged(switchPreference.getKey());
}
}
}
}
}).create();
if (isProfileDependent()) {
preferenceBtn[0].setCompoundButtonColor(getAppMode().getProfileColor(nightMode));
}
items.add(preferenceBtn[0]);
String description = switchPreference.getDescription();
if (description != null) {
BaseBottomSheetItem preferenceDescription = new BottomSheetItemWithDescription.Builder().setDescription(description).setLayoutId(R.layout.bottom_sheet_item_descr).create();
items.add(preferenceDescription);
}
}
use of net.osmand.plus.settings.backend.preferences.BooleanPreference in project Osmand by osmandapp.
the class OsmandSettings method registerBooleanPreference.
@SuppressWarnings("unchecked")
public CommonPreference<Boolean> registerBooleanPreference(String id, boolean defValue) {
if (registeredPreferences.containsKey(id)) {
return (CommonPreference<Boolean>) registeredPreferences.get(id);
}
BooleanPreference p = new BooleanPreference(this, id, defValue);
registeredPreferences.put(id, p);
return p;
}
use of net.osmand.plus.settings.backend.preferences.BooleanPreference in project Osmand by osmandapp.
the class OsmandSettings method setPreference.
// TODO doesn't look correct
@SuppressWarnings("unchecked")
public boolean setPreference(String key, Object value, ApplicationMode mode) {
OsmandPreference<?> preference = registeredPreferences.get(key);
if (preference != null) {
if (preference == APPLICATION_MODE) {
if (value instanceof String) {
String appModeKey = (String) value;
ApplicationMode appMode = ApplicationMode.valueOfStringKey(appModeKey, null);
if (appMode != null) {
setApplicationMode(appMode);
return true;
}
}
} else if (preference == DEFAULT_APPLICATION_MODE) {
if (value instanceof String) {
String appModeKey = (String) value;
ApplicationMode appMode = ApplicationMode.valueOfStringKey(appModeKey, null);
if (appMode != null) {
DEFAULT_APPLICATION_MODE.set(appMode);
return true;
}
}
} else if (preference == METRIC_SYSTEM) {
MetricsConstants metricSystem = null;
if (value instanceof String) {
String metricSystemName = (String) value;
try {
metricSystem = MetricsConstants.valueOf(metricSystemName);
} catch (IllegalArgumentException e) {
return false;
}
} else if (value instanceof Integer) {
int index = (Integer) value;
if (index >= 0 && index < MetricsConstants.values().length) {
metricSystem = MetricsConstants.values()[index];
}
}
if (metricSystem != null) {
METRIC_SYSTEM.setModeValue(mode, metricSystem);
return true;
}
} else if (preference == SPEED_SYSTEM) {
SpeedConstants speedSystem = null;
if (value instanceof String) {
String speedSystemName = (String) value;
try {
speedSystem = SpeedConstants.valueOf(speedSystemName);
} catch (IllegalArgumentException e) {
return false;
}
} else if (value instanceof Integer) {
int index = (Integer) value;
if (index >= 0 && index < SpeedConstants.values().length) {
speedSystem = SpeedConstants.values()[index];
}
}
if (speedSystem != null) {
SPEED_SYSTEM.setModeValue(mode, speedSystem);
return true;
}
} else if (preference instanceof BooleanPreference) {
if (value instanceof Boolean) {
((BooleanPreference) preference).setModeValue(mode, (Boolean) value);
return true;
}
} else if (preference instanceof StringPreference) {
if (value instanceof String) {
((StringPreference) preference).setModeValue(mode, (String) value);
return true;
}
} else if (preference instanceof FloatPreference) {
if (value instanceof Float) {
((FloatPreference) preference).setModeValue(mode, (Float) value);
return true;
}
} else if (preference instanceof IntPreference) {
if (value instanceof Integer) {
((IntPreference) preference).setModeValue(mode, (Integer) value);
return true;
}
} else if (preference instanceof LongPreference) {
if (value instanceof Long) {
((LongPreference) preference).setModeValue(mode, (Long) value);
return true;
}
} else if (preference instanceof EnumStringPreference) {
EnumStringPreference enumPref = (EnumStringPreference) preference;
if (value instanceof String) {
Enum<?> enumValue = enumPref.parseString((String) value);
if (enumValue != null) {
return enumPref.setModeValue(mode, enumValue);
}
return false;
} else if (value instanceof Enum) {
return enumPref.setModeValue(mode, value);
} else if (value instanceof Integer) {
int newVal = (Integer) value;
if (enumPref.getValues().length > newVal) {
Enum<?> enumValue = enumPref.getValues()[newVal];
return enumPref.setModeValue(mode, enumValue);
}
return false;
}
} else if (preference instanceof ContextMenuItemsPreference) {
if (value instanceof ContextMenuItemsSettings) {
((ContextMenuItemsPreference) preference).setModeValue(mode, (ContextMenuItemsSettings) value);
}
}
}
return false;
}
use of net.osmand.plus.settings.backend.preferences.BooleanPreference in project Osmand by osmandapp.
the class OsmandSettings method registerCustomRenderBooleanProperty.
public CommonPreference<Boolean> registerCustomRenderBooleanProperty(@NonNull String attrName, boolean defaultValue) {
CommonPreference<Boolean> preference = new BooleanPreference(this, RENDERER_PREFERENCE_PREFIX + attrName, defaultValue).makeProfile();
customBooleanRendersProps.put(attrName, preference);
return preference;
}
use of net.osmand.plus.settings.backend.preferences.BooleanPreference in project Osmand by osmandapp.
the class OsmandSettings method registerBooleanAccessibilityPreference.
@SuppressWarnings("unchecked")
public CommonPreference<Boolean> registerBooleanAccessibilityPreference(String id, boolean defValue) {
if (registeredPreferences.containsKey(id)) {
return (CommonPreference<Boolean>) registeredPreferences.get(id);
}
BooleanPreference p = new BooleanAccessibilityPreference(this, id, defValue);
registeredPreferences.put(id, p);
return p;
}
Aggregations