diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml
index 28d1c775a0..c398c06691 100644
--- a/OsmAnd/res/values/strings.xml
+++ b/OsmAnd/res/values/strings.xml
@@ -20,7 +20,7 @@
Will pause track logging when the app is killed (via recent apps). (OsmAnd background indication disappears from the Android notification bar.)
REC
%s track files selected
- File name:
+ File name
Only the route line will be saved, the waypoints will be deleted.
Simplified track
Change route type after
diff --git a/OsmAnd/src/net/osmand/plus/base/bottomsheetmenu/BottomSheetItemWithDescription.java b/OsmAnd/src/net/osmand/plus/base/bottomsheetmenu/BottomSheetItemWithDescription.java
index d4f9defedc..b138bee19f 100644
--- a/OsmAnd/src/net/osmand/plus/base/bottomsheetmenu/BottomSheetItemWithDescription.java
+++ b/OsmAnd/src/net/osmand/plus/base/bottomsheetmenu/BottomSheetItemWithDescription.java
@@ -74,11 +74,11 @@ public class BottomSheetItemWithDescription extends SimpleBottomSheetItem {
@Override
public void inflate(Context context, ViewGroup container, boolean nightMode) {
super.inflate(context, container, nightMode);
- descriptionTv = (TextView) view.findViewById(R.id.description);
+ descriptionTv = view.findViewById(R.id.description);
if (descriptionTv != null) {
- if(Algorithms.isEmpty(description) && descriptionTv.getText().length() == 0){
+ if (Algorithms.isEmpty(description)) {
descriptionTv.setVisibility(View.GONE);
- }else{
+ } else {
descriptionTv.setVisibility(View.VISIBLE);
}
descriptionTv.setText(description);
diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java
index 7a6091b2fa..1d39ab2e15 100644
--- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java
+++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java
@@ -147,6 +147,12 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
LINE
}
+ private enum SaveAction {
+ SHOW_SNACK_BAR_AND_CLOSE,
+ SHOW_TOAST,
+ SHOW_IS_SAVED_FRAGMENT
+ }
+
private void setEditingCtx(MeasurementEditingContext editingCtx) {
this.editingCtx = editingCtx;
}
@@ -391,7 +397,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
toolBarController.setOnSaveViewClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
- saveChanges(true, true);
+ saveChanges(SaveAction.SHOW_SNACK_BAR_AND_CLOSE);
}
});
updateToolbar();
@@ -584,17 +590,17 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
}
}
- public void saveChanges(boolean close, boolean done) {
+ public void saveChanges(SaveAction saveAction) {
MapActivity mapActivity = getMapActivity();
if (mapActivity != null) {
if (editingCtx.getPointsCount() > 0) {
GpxData gpxData = editingCtx.getGpxData();
if (editingCtx.isNewData()) {
- saveAsGpx(SaveType.ROUTE_POINT, close, done);
+ saveAsGpx(SaveType.ROUTE_POINT, saveAction);
} else if (isInEditMode() && gpxData.getActionType() == ActionType.EDIT_SEGMENT) {
openSaveAsNewTrackMenu(mapActivity);
} else {
- addToGpx(mapActivity, close, done);
+ addToGpx(mapActivity, saveAction);
}
} else {
Toast.makeText(mapActivity, getString(R.string.none_point_error), Toast.LENGTH_SHORT).show();
@@ -655,7 +661,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
@Override
public void saveChangesOnClick() {
- saveChanges(false, false);
+ saveChanges(SaveAction.SHOW_TOAST);
}
@Override
@@ -875,7 +881,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
.getSelectedFileByPath(gpxFile.path);
boolean showOnMap = selectedGpxFile != null;
saveExistingGpx(gpxFile, showOnMap, ActionType.ADD_SEGMENT,
- editingCtx.hasRoute() ? SaveType.ROUTE_POINT : SaveType.LINE, false, false);
+ editingCtx.hasRoute() ? SaveType.ROUTE_POINT : SaveType.LINE, SaveAction.SHOW_TOAST);
}
}
@@ -919,7 +925,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
}
fileName = fileName + GPX_FILE_EXT;
SaveType saveType = simplifiedTrack ? SaveType.LINE : SaveType.ROUTE_POINT;
- saveNewGpx(dir, fileName, showOnMap, saveType, true, false);
+ saveNewGpx(dir, fileName, showOnMap, saveType, SaveAction.SHOW_IS_SAVED_FRAGMENT);
}
private MeasurementAdapterListener createMeasurementAdapterListener(final ItemTouchHelper touchHelper) {
@@ -1313,7 +1319,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
}
}
- private void addToGpx(MapActivity mapActivity, boolean close, boolean done) {
+ private void addToGpx(MapActivity mapActivity, SaveAction saveAction) {
GpxData gpxData = editingCtx.getGpxData();
GPXFile gpx = gpxData != null ? gpxData.getGpxFile() : null;
if (gpx != null) {
@@ -1321,11 +1327,11 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
mapActivity.getMyApplication().getSelectedGpxHelper().getSelectedFileByPath(gpx.path);
boolean showOnMap = selectedGpxFile != null;
saveExistingGpx(gpx, showOnMap, gpxData.getActionType(),
- editingCtx.hasRoute() ? SaveType.ROUTE_POINT : SaveType.LINE, close, done);
+ editingCtx.hasRoute() ? SaveType.ROUTE_POINT : SaveType.LINE, saveAction);
}
}
- private void saveAsGpx(final SaveType saveType, final boolean close, final boolean done) {
+ private void saveAsGpx(final SaveType saveType, final SaveAction saveAction) {
MapActivity mapActivity = getMapActivity();
if (mapActivity != null) {
final File dir = mapActivity.getMyApplication().getAppPath(IndexConstants.GPX_INDEX_DIR);
@@ -1364,7 +1370,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
fout = new File(dir, fileName);
}
}
- saveNewGpx(dir, fileName, showOnMapToggle.isChecked(), saveType, close, done);
+ saveNewGpx(dir, fileName, showOnMapToggle.isChecked(), saveType, saveAction);
}
})
.setNegativeButton(R.string.shared_string_cancel, null);
@@ -1424,12 +1430,13 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
return displayedName;
}
- private void saveNewGpx(File dir, String fileName, boolean showOnMap, SaveType saveType, boolean close, boolean done) {
- saveGpx(dir, fileName, showOnMap, null, null, saveType, close, done);
+ private void saveNewGpx(File dir, String fileName, boolean showOnMap, SaveType saveType, SaveAction saveAction) {
+ saveGpx(dir, fileName, showOnMap, null, null, saveType, saveAction);
}
- private void saveExistingGpx(GPXFile gpx, boolean showOnMap, ActionType actionType, SaveType saveType, boolean close, boolean done) {
- saveGpx(null, null, showOnMap, gpx, actionType, saveType, close, done);
+ private void saveExistingGpx(GPXFile gpx, boolean showOnMap, ActionType actionType, SaveType saveType,
+ SaveAction saveAction) {
+ saveGpx(null, null, showOnMap, gpx, actionType, saveType, saveAction);
}
@SuppressLint("StaticFieldLeak")
@@ -1439,8 +1446,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
final GPXFile gpxFile,
final ActionType actionType,
final SaveType saveType,
- final boolean close,
- final boolean done) {
+ final SaveAction saveAction) {
new AsyncTask() {
@@ -1611,8 +1617,8 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
if (isInEditMode()) {
dismiss(mapActivity);
} else {
- if (close) {
- if (done) {
+ switch (saveAction) {
+ case SHOW_SNACK_BAR_AND_CLOSE:
final WeakReference mapActivityRef = new WeakReference<>(mapActivity);
snackbar = Snackbar.make(mapActivity.getLayout(),
MessageFormat.format(getString(R.string.gpx_saved_sucessfully), toSave.getName()),
@@ -1625,7 +1631,6 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
FileUtils.renameFile(mapActivity, toSave, new FileUtils.RenameCallback() {
@Override
public void renamedTo(File file) {
-
}
});
}
@@ -1635,17 +1640,19 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
.setAllCaps(false);
UiUtilities.setupSnackbar(snackbar, nightMode);
snackbar.show();
- } else {
+ dismiss(mapActivity);
+ break;
+ case SHOW_IS_SAVED_FRAGMENT:
SavedTrackBottomSheetDialogFragment.showInstance(mapActivity.getSupportFragmentManager(),
toSave.getName());
- }
- dismiss(mapActivity);
- } else {
- if (!savedGpxFile.showCurrentTrack) {
- Toast.makeText(mapActivity,
- MessageFormat.format(getString(R.string.gpx_saved_sucessfully), toSave.getAbsolutePath()),
- Toast.LENGTH_LONG).show();
- }
+ dismiss(mapActivity);
+ break;
+ case SHOW_TOAST:
+ if (!savedGpxFile.showCurrentTrack) {
+ Toast.makeText(mapActivity,
+ MessageFormat.format(getString(R.string.gpx_saved_sucessfully), toSave.getAbsolutePath()),
+ Toast.LENGTH_LONG).show();
+ }
}
}
} else {
diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/SaveAsNewTrackBottomSheetDialogFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/SaveAsNewTrackBottomSheetDialogFragment.java
index 97ebb1cef9..5d9273118e 100644
--- a/OsmAnd/src/net/osmand/plus/measurementtool/SaveAsNewTrackBottomSheetDialogFragment.java
+++ b/OsmAnd/src/net/osmand/plus/measurementtool/SaveAsNewTrackBottomSheetDialogFragment.java
@@ -65,7 +65,8 @@ public class SaveAsNewTrackBottomSheetDialogFragment extends MenuBottomSheetDial
R.layout.track_name_edit_text, null);
final TextInputLayout nameTextBox = editNameView.findViewById(R.id.name_text_box);
nameTextBox.setBoxBackgroundColorResource(R.color.material_text_input_layout_bg);
- nameTextBox.setHint(getString(R.string.file_name));
+ nameTextBox.setHint(app.getString(R.string.ltr_or_rtl_combine_via_colon,
+ app.getString(R.string.shared_string_file_name), "").trim());
ColorStateList colorStateList = ColorStateList.valueOf(ContextCompat
.getColor(app, nightMode ? R.color.text_color_secondary_dark : R.color.text_color_secondary_light));
nameTextBox.setDefaultHintTextColor(colorStateList);
@@ -96,19 +97,20 @@ public class SaveAsNewTrackBottomSheetDialogFragment extends MenuBottomSheetDial
items.add(new DividerSpaceItem(app, contentPaddingSmall));
FolderListAdapter adapter = new FolderListAdapter(app, nightMode, folderName);
- adapter.setListener(createFolderSelectListener());
- View view = View.inflate(UiUtilities.getThemedContext(app, nightMode), R.layout.bottom_sheet_item_recyclerview,
- null);
- View recyclerView = view.findViewById(R.id.recycler_view);
- recyclerView.setPadding(contentPaddingHalf, 0, contentPaddingHalf, 0);
- BaseBottomSheetItem scrollItem = new HorizontalRecyclerBottomSheetItem.Builder()
- .setAdapter(adapter)
- .setCustomView(view)
- .create();
- this.items.add(scrollItem);
-
- items.add(new DividerSpaceItem(app, app.getResources().getDimensionPixelSize(R.dimen.dialog_content_margin)));
+ if (adapter.getItemCount() > 0) {
+ adapter.setListener(createFolderSelectListener());
+ View view = View.inflate(UiUtilities.getThemedContext(app, nightMode), R.layout.bottom_sheet_item_recyclerview,
+ null);
+ View recyclerView = view.findViewById(R.id.recycler_view);
+ recyclerView.setPadding(contentPaddingHalf, 0, contentPaddingHalf, 0);
+ BaseBottomSheetItem scrollItem = new HorizontalRecyclerBottomSheetItem.Builder()
+ .setAdapter(adapter)
+ .setCustomView(view)
+ .create();
+ this.items.add(scrollItem);
+ items.add(new DividerSpaceItem(app, app.getResources().getDimensionPixelSize(R.dimen.dialog_content_margin)));
+ }
int activeColorRes = nightMode ? R.color.active_color_primary_dark : R.color.active_color_primary_light;
int backgroundColor = AndroidUtils.getColorFromAttr(UiUtilities.getThemedContext(app, nightMode),
R.attr.activity_background_color);