Textfields, use profile color as active color;

Dismiss bottom sheet
This commit is contained in:
Skalii 2021-01-14 18:14:45 +02:00
parent ebbcb1778f
commit d75134129d
2 changed files with 79 additions and 5 deletions

View file

@ -68,6 +68,10 @@ public class OnlineRoutingCard extends BaseCard {
bottomDivider = view.findViewById(R.id.bottom_divider);
button = view.findViewById(R.id.button);
textFieldBoxes.setPrimaryColor(nightMode
? view.getContext().getResources().getColor(R.color.active_color_primary_dark)
: view.getContext().getResources().getColor(R.color.active_color_primary_light));
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

View file

@ -1,6 +1,8 @@
package net.osmand.plus.onlinerouting;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Build;
import android.os.Bundle;
import android.view.LayoutInflater;
@ -12,8 +14,10 @@ import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.activity.OnBackPressedCallback;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
@ -74,6 +78,7 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
private ApplicationMode appMode;
private OnlineRoutingEngineObject engine;
private OnlineRoutingEngineObject initEngine;
private ExampleLocation selectedLocation;
private String editedEngineKey;
@ -125,11 +130,20 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
mapActivity = getMapActivity();
helper = app.getOnlineRoutingHelper();
engine = new OnlineRoutingEngineObject();
initEngine = new OnlineRoutingEngineObject();
if (savedInstanceState != null) {
restoreState(savedInstanceState);
} else {
initState();
}
requireMyActivity().getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
public void handleOnBackPressed() {
MapActivity mapActivity = getMapActivity();
if (mapActivity != null) {
showExitDialog();
}
}
});
}
@Nullable
@ -143,13 +157,14 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
scrollView = (ViewGroup) segmentsContainer.getParent();
onScroll = new ViewTreeObserver.OnScrollChangedListener() {
int pastY = 0;
@Override
public void onScrollChanged() {
int y = scrollView.getScrollY();
if (pastY != y) {
pastY = y;
View vieww = view.findFocus();
AndroidUtils.hideSoftKeyboard(requireActivity(), vieww);
View focus = view.findFocus();
AndroidUtils.hideSoftKeyboard(requireActivity(), focus);
}
}
};
@ -166,6 +181,7 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
setupExampleCard();
setupResultsContainer();
addSpaceSegment();
engine.cloneIn(initEngine);
setupButtons();
@ -345,7 +361,7 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
navigationIcon.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
showExitDialog();
}
});
TextView title = toolbar.findViewById(R.id.toolbar_title);
@ -415,7 +431,7 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
cancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
showExitDialog();
}
});
@ -571,10 +587,41 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
private void dismiss() {
FragmentActivity activity = getActivity();
if (activity != null) {
activity.onBackPressed();
FragmentManager fragmentManager = activity.getSupportFragmentManager();
if (!fragmentManager.isStateSaved()) {
fragmentManager.popBackStack();
}
}
}
public void showExitDialog() {
View focus = view.findFocus();
AndroidUtils.hideSoftKeyboard(requireMyActivity(), focus);
if (!engine.equals(initEngine)) {
AlertDialog.Builder dismissDialog = createWarningDialog(getActivity(),
R.string.shared_string_dismiss, R.string.exit_without_saving, R.string.shared_string_cancel);
dismissDialog.setPositiveButton(R.string.shared_string_exit, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dismiss();
}
});
dismissDialog.show();
} else {
dismiss();
}
}
private AlertDialog.Builder createWarningDialog(Activity activity, int title, int message, int negButton) {
Context themedContext = UiUtilities.getThemedContext(activity, isNightMode());
AlertDialog.Builder warningDialog = new AlertDialog.Builder(themedContext);
warningDialog.setTitle(getString(title));
warningDialog.setMessage(getString(message));
warningDialog.setNegativeButton(negButton, null);
return warningDialog;
}
private boolean isNightMode() {
return !app.getSettings().isLightContentForMode(appMode);
}
@ -635,5 +682,28 @@ public class OnlineRoutingEngineFragment extends BaseOsmAndFragment {
}
return customServerUrl;
}
public void cloneIn(OnlineRoutingEngineObject clone) {
clone.customName = customName;
clone.type = type;
clone.customServerUrl = customServerUrl;
clone.vehicleType = vehicleType;
clone.customVehicleKey = customVehicleKey;
clone.apiKey = apiKey;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
OnlineRoutingEngineObject engine = (OnlineRoutingEngineObject) obj;
if (customName != engine.customName) return false;
if (type != engine.type) return false;
if (customServerUrl != engine.customServerUrl) return false;
if (vehicleType != engine.vehicleType) return false;
if (customVehicleKey != engine.customVehicleKey) return false;
return apiKey == engine.apiKey;
}
}
}