Online Routing UI - refactoring part 3

This commit is contained in:
nazar-kutz 2021-01-03 20:28:47 +02:00
parent 802221dbc1
commit 38a3e8c6fe
9 changed files with 186 additions and 115 deletions

View file

@ -4,6 +4,7 @@ import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.widget.EditText;
import android.widget.TextView;
@ -11,6 +12,7 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import net.osmand.AndroidUtils;
import net.osmand.CallbackWithObject;
import net.osmand.plus.R;
import net.osmand.plus.UiUtilities;
@ -83,6 +85,16 @@ public class OnlineRoutingCard extends BaseCard {
}
}
});
editText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
editText.setSelection(editText.getText().length());
AndroidUtils.showSoftKeyboard(getMapActivity(), editText);
}
}
});
}
public void setHeaderTitle(@NonNull String title) {

View file

@ -1,8 +1,10 @@
package net.osmand.plus.onlinerouting;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import android.content.Context;
import androidx.annotation.NonNull;
import net.osmand.plus.R;
import net.osmand.util.Algorithms;
import java.util.HashMap;
@ -10,40 +12,39 @@ import java.util.Map;
public class OnlineRoutingEngine {
public final static String ONLINE_ROUTING_ENGINE_PREFIX = "online_routing_engine_";
public enum EngineParameterType {
CUSTOM_SERVER_URL,
CUSTOM_NAME,
API_KEY
}
private String stringKey;
private String name;
private ServerType serverType;
private String vehicleKey;
private Map<String, String> params;
private Map<String, String> params = new HashMap<>();
public OnlineRoutingEngine(@Nullable String stringKey,
@NonNull String name,
public OnlineRoutingEngine(@NonNull String stringKey,
@NonNull ServerType serverType,
@NonNull String vehicleKey,
Map<String, String> params) {
if (stringKey == null) {
stringKey = generateKey(vehicleKey);
}
this(stringKey, serverType, vehicleKey);
this.params = params;
}
public OnlineRoutingEngine(@NonNull String stringKey,
@NonNull ServerType serverType,
@NonNull String vehicleKey) {
this.stringKey = stringKey;
this.name = name;
this.serverType = serverType;
this.vehicleKey = vehicleKey;
this.params = params;
}
public String getStringKey() {
return stringKey;
}
public String getName() {
return name;
}
public ServerType getServerType() {
return serverType;
}
@ -66,20 +67,40 @@ public class OnlineRoutingEngine {
}
public String getParameter(EngineParameterType paramType) {
if (params != null) {
return params.get(paramType.name());
}
return null;
return params.get(paramType.name());
}
public void putParameter(EngineParameterType paramType, String paramValue) {
if (params == null) {
params = new HashMap<>();
}
params.put(paramType.name(), paramValue);
}
private static String generateKey(String vehicleKey) {
return "online_" + vehicleKey + "_" + System.currentTimeMillis();
public String getName(@NonNull Context ctx) {
String customName = getParameter(EngineParameterType.CUSTOM_NAME);
if (customName != null) {
return customName;
} else {
return getStandardName(ctx);
}
}
private String getStandardName(@NonNull Context ctx) {
return getStandardName(ctx, serverType, vehicleKey);
}
public static String getStandardName(@NonNull Context ctx,
@NonNull ServerType serverType,
@NonNull String vehicleKey) {
String vehicleTitle = VehicleType.toHumanString(ctx, vehicleKey);
String pattern = ctx.getString(R.string.ltr_or_rtl_combine_via_dash);
return String.format(pattern, serverType.getTitle(), vehicleTitle);
}
public static OnlineRoutingEngine createNewEngine(@NonNull ServerType serverType,
@NonNull String vehicleKey) {
return new OnlineRoutingEngine(generateKey(), serverType, vehicleKey);
}
private static String generateKey() {
return ONLINE_ROUTING_ENGINE_PREFIX + System.currentTimeMillis();
}
}

View file

@ -1,5 +1,6 @@
package net.osmand.plus.onlinerouting;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.view.LayoutInflater;
@ -50,14 +51,16 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
private static final String ENGINE_VEHICLE_TYPE_KEY = "engine_vehicle_type";
private static final String ENGINE_CUSTOM_VEHICLE_KEY = "engine_custom_vehicle";
private static final String ENGINE_API_KEY_KEY = "engine_api_key";
private static final String ENGINE_NAME_CHANGED_BY_USER_KEY = "engine_name_changed_by_user_key";
private static final String EXAMPLE_LOCATION_KEY = "example_location";
private static final String APP_MODE_KEY = "app_mode";
private static final String EDITED_ENGINE_KEY = "edited_engine_key";
private OsmandApplication app;
private MapActivity mapActivity;
private OnlineRoutingHelper helper;
private View view;
private ViewGroup segmentsContainer;
private OnlineRoutingCard nameCard;
private OnlineRoutingCard serverCard;
private OnlineRoutingCard vehicleCard;
@ -116,6 +119,7 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
app = requireMyApplication();
mapActivity = getMapActivity();
helper = app.getOnlineRoutingHelper();
engine = new OnlineRoutingEngineObject();
if (savedInstanceState != null) {
@ -130,41 +134,48 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
public View onCreateView(@NonNull LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
MapActivity mapActivity = getMapActivity();
if (mapActivity == null) {
return null;
}
boolean nightMode = isNightMode();
inflater = UiUtilities.getInflater(getContext(), nightMode);
View view = inflater.inflate(
view = getInflater().inflate(
R.layout.online_routing_engine_fragment, container, false);
segmentsContainer = (ViewGroup) view.findViewById(R.id.segments_container);
if (Build.VERSION.SDK_INT >= 21) {
AndroidUtils.addStatusBarPadding21v(getContext(), view);
}
setupToolbar(view);
setupToolbar((Toolbar) view.findViewById(R.id.toolbar));
ViewGroup segmentsContainer = (ViewGroup) view.findViewById(R.id.segments_container);
setupNameCard();
setupServerCard();
setupVehicleCard();
setupApiKeyCard();
setupExampleCard();
setupResultsContainer();
addSpaceSegment();
// create name card
nameCard = new OnlineRoutingCard(mapActivity, nightMode);
setupButtons();
updateCardViews(nameCard, serverCard, vehicleCard, exampleCard);
return view;
}
private void setupNameCard() {
nameCard = new OnlineRoutingCard(mapActivity, isNightMode());
nameCard.build(mapActivity);
nameCard.setDescription(getString(R.string.select_nav_profile_dialog_message));
nameCard.setEditedText(engine.name);
nameCard.setEditedText(engine.getName(app));
nameCard.setFieldBoxLabelText(getString(R.string.shared_string_name));
nameCard.setOnTextChangedListener(new OnTextChangedListener() {
@Override
public void onTextChanged(boolean changedByUser, String text) {
if (!isEditingMode() && !engine.wasNameChangedByUser && changedByUser) {
engine.wasNameChangedByUser = true;
if (changedByUser) {
engine.customName = text;
}
engine.name = text;
}
});
nameCard.showDivider();
segmentsContainer.addView(nameCard.getView());
}
// create server card
serverCard = new OnlineRoutingCard(mapActivity, nightMode);
private void setupServerCard() {
serverCard = new OnlineRoutingCard(mapActivity, isNightMode());
serverCard.build(mapActivity);
serverCard.setHeaderTitle(getString(R.string.shared_string_type));
List<HorizontalSelectionItem> serverItems = new ArrayList<>();
@ -195,16 +206,17 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
serverCard.setFieldBoxLabelText(getString(R.string.shared_string_server_url));
serverCard.showDivider();
segmentsContainer.addView(serverCard.getView());
}
// create vehicle card
vehicleCard = new OnlineRoutingCard(mapActivity, nightMode);
private void setupVehicleCard() {
vehicleCard = new OnlineRoutingCard(mapActivity, isNightMode());
vehicleCard.build(mapActivity);
vehicleCard.setHeaderTitle(getString(R.string.shared_string_vehicle));
List<HorizontalSelectionItem> vehicleItems = new ArrayList<>();
for (VehicleType vehicle : VehicleType.values()) {
vehicleItems.add(new HorizontalSelectionItem(vehicle.toHumanString(app), vehicle));
vehicleItems.add(new HorizontalSelectionItem(vehicle.getTitle(app), vehicle));
}
vehicleCard.setSelectionMenu(vehicleItems, engine.vehicleType.toHumanString(app),
vehicleCard.setSelectionMenu(vehicleItems, engine.vehicleType.getTitle(app),
new CallbackWithObject<HorizontalSelectionItem>() {
@Override
public boolean processResult(HorizontalSelectionItem result) {
@ -221,16 +233,20 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
vehicleCard.setOnTextChangedListener(new OnTextChangedListener() {
@Override
public void onTextChanged(boolean editedByUser, String text) {
engine.customVehicleKey = text;
if (editedByUser) {
engine.customVehicleKey = text;
updateCardViews(nameCard, exampleCard);
}
}
});
vehicleCard.setEditedText(engine.customVehicleKey);
vehicleCard.setFieldBoxHelperText(getString(R.string.shared_string_enter_param));
vehicleCard.showDivider();
segmentsContainer.addView(vehicleCard.getView());
}
// create api key card
apiKeyCard = new OnlineRoutingCard(mapActivity, nightMode);
private void setupApiKeyCard() {
apiKeyCard = new OnlineRoutingCard(mapActivity, isNightMode());
apiKeyCard.build(mapActivity);
apiKeyCard.setHeaderTitle(getString(R.string.shared_string_api_key));
apiKeyCard.setFieldBoxLabelText(getString(R.string.keep_it_empty_if_not));
@ -244,9 +260,10 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
}
});
segmentsContainer.addView(apiKeyCard.getView());
}
// create example card
exampleCard = new OnlineRoutingCard(mapActivity, nightMode);
private void setupExampleCard() {
exampleCard = new OnlineRoutingCard(mapActivity, isNightMode());
exampleCard.build(mapActivity);
exampleCard.setHeaderTitle(getString(R.string.shared_string_example));
List<HorizontalSelectionItem> locationItems = new ArrayList<>();
@ -274,48 +291,24 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
}
});
segmentsContainer.addView(exampleCard.getView());
}
testResultsContainer = inflater.inflate(
private void setupResultsContainer() {
testResultsContainer = getInflater().inflate(
R.layout.bottom_sheet_item_with_descr_64dp, segmentsContainer, false);
testResultsContainer.setVisibility(View.GONE);
segmentsContainer.addView(testResultsContainer);
}
View bottomSpaceView = new View(app);
private void addSpaceSegment() {
int space = (int) getResources().getDimension(R.dimen.empty_state_text_button_padding_top);
View bottomSpaceView = new View(app);
bottomSpaceView.setLayoutParams(
new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, space));
segmentsContainer.addView(bottomSpaceView);
View cancelButton = view.findViewById(R.id.dismiss_button);
UiUtilities.setupDialogButton(nightMode, cancelButton,
DialogButtonType.SECONDARY, R.string.shared_string_cancel);
cancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
view.findViewById(R.id.buttons_divider).setVisibility(View.VISIBLE);
View saveButton = view.findViewById(R.id.right_bottom_button);
UiUtilities.setupDialogButton(nightMode, saveButton,
UiUtilities.DialogButtonType.PRIMARY, R.string.shared_string_save);
saveButton.setVisibility(View.VISIBLE);
saveButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
saveChanges();
dismiss();
}
});
updateCardViews(nameCard, serverCard, vehicleCard, exampleCard);
return view;
}
private void setupToolbar(View mainView) {
Toolbar toolbar = (Toolbar) mainView.findViewById(R.id.toolbar);
private void setupToolbar(Toolbar toolbar) {
ImageView navigationIcon = toolbar.findViewById(R.id.close_button);
navigationIcon.setImageResource(R.drawable.ic_action_close);
navigationIcon.setOnClickListener(new OnClickListener() {
@ -348,10 +341,8 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
private void updateCardViews(BaseCard... cardsToUpdate) {
for (BaseCard card : cardsToUpdate) {
if (nameCard.equals(card)) {
if (!engine.wasNameChangedByUser) {
String name = String.format(
getString(R.string.ltr_or_rtl_combine_via_dash),
engine.serverType.getTitle(), engine.vehicleType.toHumanString(app));
if (Algorithms.isEmpty(engine.customName)) {
String name = OnlineRoutingEngine.getStandardName(app, engine.serverType, engine.getVehicleKey());
nameCard.setEditedText(name);
}
@ -365,7 +356,7 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
}
} else if (vehicleCard.equals(card)) {
vehicleCard.setHeaderSubtitle(engine.vehicleType.toHumanString(app));
vehicleCard.setHeaderSubtitle(engine.vehicleType.getTitle(app));
if (engine.vehicleType == VehicleType.CUSTOM) {
vehicleCard.showFieldBox();
vehicleCard.setEditedText(engine.getVehicleKey());
@ -379,11 +370,43 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
}
}
private void setupButtons() {
boolean nightMode = isNightMode();
View cancelButton = view.findViewById(R.id.dismiss_button);
UiUtilities.setupDialogButton(nightMode, cancelButton,
DialogButtonType.SECONDARY, R.string.shared_string_cancel);
cancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
view.findViewById(R.id.buttons_divider).setVisibility(View.VISIBLE);
View saveButton = view.findViewById(R.id.right_bottom_button);
UiUtilities.setupDialogButton(nightMode, saveButton,
UiUtilities.DialogButtonType.PRIMARY, R.string.shared_string_save);
saveButton.setVisibility(View.VISIBLE);
saveButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
saveChanges();
dismiss();
}
});
}
private void saveChanges() {
OnlineRoutingEngine engineToSave = new OnlineRoutingEngine(editedEngineKey, engine.name,
engine.serverType, engine.getVehicleKey(), null);
OnlineRoutingEngine engineToSave;
if (isEditingMode()) {
engineToSave = new OnlineRoutingEngine(editedEngineKey, engine.serverType, engine.getVehicleKey());
} else {
engineToSave = OnlineRoutingEngine.createNewEngine(engine.serverType, engine.getVehicleKey());
}
engineToSave.putParameter(EngineParameterType.CUSTOM_SERVER_URL, engine.customServerUrl);
engineToSave.putParameter(EngineParameterType.CUSTOM_NAME, engine.customName);
if (engine.serverType == ServerType.GRAPHHOPER) {
engineToSave.putParameter(EngineParameterType.API_KEY, engine.apiKey);
}
@ -470,13 +493,12 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
}
private void saveState(Bundle outState) {
outState.putString(ENGINE_NAME_KEY, engine.name);
outState.putString(ENGINE_NAME_KEY, engine.customName);
outState.putString(ENGINE_SERVER_KEY, engine.serverType.name());
outState.putString(ENGINE_SERVER_URL_KEY, engine.customServerUrl);
outState.putString(ENGINE_VEHICLE_TYPE_KEY, engine.vehicleType.name());
outState.putString(ENGINE_CUSTOM_VEHICLE_KEY, engine.customVehicleKey);
outState.putString(ENGINE_API_KEY_KEY, engine.apiKey);
outState.putBoolean(ENGINE_NAME_CHANGED_BY_USER_KEY, engine.wasNameChangedByUser);
outState.putString(EXAMPLE_LOCATION_KEY, selectedLocation.name());
if (appMode != null) {
outState.putString(APP_MODE_KEY, appMode.getStringKey());
@ -485,13 +507,12 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
}
private void restoreState(Bundle savedState) {
engine.name = savedState.getString(ENGINE_NAME_KEY);
engine.customName = savedState.getString(ENGINE_NAME_KEY);
engine.serverType = ServerType.valueOf(savedState.getString(ENGINE_SERVER_KEY));
engine.customServerUrl = savedState.getString(ENGINE_SERVER_URL_KEY);
engine.vehicleType = VehicleType.valueOf(savedState.getString(ENGINE_VEHICLE_TYPE_KEY));
engine.customVehicleKey = savedState.getString(ENGINE_CUSTOM_VEHICLE_KEY);
engine.apiKey = savedState.getString(ENGINE_API_KEY_KEY);
engine.wasNameChangedByUser = savedState.getBoolean(ENGINE_NAME_CHANGED_BY_USER_KEY);
selectedLocation = ExampleLocation.valueOf(savedState.getString(EXAMPLE_LOCATION_KEY));
appMode = ApplicationMode.valueOfStringKey(savedState.getString(APP_MODE_KEY), null);
editedEngineKey = savedState.getString(EDITED_ENGINE_KEY);
@ -505,8 +526,7 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
if (isEditingMode()) {
OnlineRoutingEngine editedEngine = helper.getEngineByKey(editedEngineKey);
if (editedEngine != null) {
engine.name = editedEngine.getName();
engine.wasNameChangedByUser = true;
engine.customName = editedEngine.getParameter(EngineParameterType.CUSTOM_NAME);
engine.serverType = editedEngine.getServerType();
engine.customServerUrl = editedEngine.getParameter(EngineParameterType.CUSTOM_SERVER_URL);
String vehicleKey = editedEngine.getVehicleKey();
@ -543,6 +563,10 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
}
}
private LayoutInflater getInflater() {
return UiUtilities.getInflater(mapActivity, isNightMode());
}
public static void showInstance(@NonNull FragmentActivity activity,
@NonNull ApplicationMode appMode,
String editedEngineKey) {
@ -558,13 +582,12 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
}
private static class OnlineRoutingEngineObject {
private String name;
private String customName;
private ServerType serverType;
private String customServerUrl;
private VehicleType vehicleType;
private String customVehicleKey;
private String apiKey;
private boolean wasNameChangedByUser;
public String getVehicleKey() {
if (vehicleType == VehicleType.CUSTOM) {
@ -576,5 +599,12 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
public String getBaseUrl() {
return customServerUrl != null ? customServerUrl : serverType.getBaseUrl();
}
public String getName(Context ctx) {
if (customName != null) {
return customName;
}
return OnlineRoutingEngine.getStandardName(ctx, serverType, getVehicleKey());
}
}
}

View file

@ -91,7 +91,7 @@ public class OnlineRoutingHelper {
JSONObject json = new JSONObject(jsonString);
readFromJson(json, engines);
} catch (JSONException e) {
LOG.debug("Error when read setting from JSON");
LOG.debug("Error when create a new JSONObject: " + e.toString());
}
}
return engines;
@ -108,7 +108,7 @@ public class OnlineRoutingHelper {
}
}
private void readFromJson(JSONObject json, List<OnlineRoutingEngine> engines) {
private static void readFromJson(JSONObject json, List<OnlineRoutingEngine> engines) {
try {
if (!json.has("items")) {
return;
@ -120,19 +120,18 @@ public class OnlineRoutingHelper {
for (int i = 0; i < itemsJson.length(); i++) {
JSONObject object = itemsJson.getJSONObject(i);
String key = object.getString("key");
String name = object.getString("name");
String vehicleKey = object.getString("vehicle");
ServerType serverType = ServerType.valueOf(object.getString("serverType"));
String paramsString = object.getString("params");
HashMap<String, String> params = gson.fromJson(paramsString, type);
engines.add(new OnlineRoutingEngine(key, name, serverType, vehicleKey, params));
engines.add(new OnlineRoutingEngine(key, serverType, vehicleKey, params));
}
} catch (JSONException e) {
LOG.debug("Error when read setting from JSON internal");
LOG.debug("Error when reading engines from JSON: " + e.toString());
}
}
private boolean writeToJson(JSONObject json, List<OnlineRoutingEngine> engines) {
private static boolean writeToJson(JSONObject json, List<OnlineRoutingEngine> engines) {
JSONArray jsonArray = new JSONArray();
Gson gson = new Gson();
Type type = new TypeToken<HashMap<String, String>>() {
@ -141,7 +140,6 @@ public class OnlineRoutingHelper {
for (OnlineRoutingEngine engine : engines) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("key", engine.getStringKey());
jsonObject.put("name", engine.getName());
jsonObject.put("serverType", engine.getServerType().name());
jsonObject.put("vehicle", engine.getVehicleKey());
jsonObject.put("params", gson.toJson(engine.getParams(), type));
@ -150,7 +148,7 @@ public class OnlineRoutingHelper {
json.put("items", jsonArray);
return true;
} catch (JSONException e) {
LOG.debug("Error when write engines to JSON");
LOG.debug("Error when writing engines to JSON: " + e.toString());
return false;
}
}

View file

@ -2,6 +2,8 @@ package net.osmand.plus.onlinerouting;
import android.content.Context;
import androidx.annotation.NonNull;
import net.osmand.plus.R;
import net.osmand.util.Algorithms;
@ -10,7 +12,7 @@ public enum VehicleType {
BIKE("bike", R.string.routing_engine_vehicle_type_bike),
FOOT("foot", R.string.routing_engine_vehicle_type_foot),
DRIVING("driving", R.string.routing_engine_vehicle_type_driving),
CUSTOM("-", R.string.shared_string_custom);
CUSTOM("", R.string.shared_string_custom);
VehicleType(String key, int titleId) {
this.key = key;
@ -24,10 +26,19 @@ public enum VehicleType {
return key;
}
public String toHumanString(Context ctx) {
public String getTitle(Context ctx) {
return ctx.getString(titleId);
}
public static String toHumanString(@NonNull Context ctx,
@NonNull String key) {
VehicleType vehicleType = getVehicleByKey(key);
if (vehicleType == CUSTOM) {
return Algorithms.capitalizeFirstLetter(key);
}
return vehicleType.getTitle(ctx);
}
public static VehicleType getVehicleByKey(String key) {
for (VehicleType v : values()) {
if (Algorithms.objectEquals(v.getKey(), key)) {

View file

@ -1,13 +1,12 @@
package net.osmand.plus.profiles;
import net.osmand.plus.R;
public class OnlineRoutingEngineDataObject extends ProfileDataObject {
public OnlineRoutingEngineDataObject(String name,
String description,
String stringKey,
int iconRes,
boolean isSelected,
ProfileIconColors iconColor) {
super(name, description, stringKey, iconRes, isSelected, iconColor);
String stringKey) {
super(name, description, stringKey, R.drawable.ic_world_globe_dark, false, null);
}
}

View file

@ -71,8 +71,8 @@ public class ProfileDataUtils {
public static List<OnlineRoutingEngineDataObject> getOnlineRoutingProfiles(OsmandApplication app) {
List<OnlineRoutingEngineDataObject> objects = new ArrayList<>();
for (OnlineRoutingEngine engine : app.getOnlineRoutingHelper().getEngines()) {
objects.add(new OnlineRoutingEngineDataObject(engine.getName(),
engine.getBaseUrl(), engine.getStringKey(), R.drawable.ic_world_globe_dark, false, null));
objects.add(new OnlineRoutingEngineDataObject(
engine.getName(app), engine.getBaseUrl(), engine.getStringKey()));
}
return objects;
}

View file

@ -237,7 +237,7 @@ public class SelectProfileBottomSheet extends BasePreferenceBottomSheet {
View itemView = UiUtilities.getInflater(getContext(), nightMode).inflate(
profile instanceof OnlineRoutingEngineDataObject ?
R.layout.bottom_sheet_item_with_descr_and_radio_and_eng_btn :
R.layout.bottom_sheet_item_with_descr_radio_and_icon_btn :
R.layout.bottom_sheet_item_with_descr_and_radio_btn, null);
TextView tvTitle = itemView.findViewById(R.id.title);
TextView tvDescription = itemView.findViewById(R.id.description);