From ac1168664694563d470739c428b4dbc49347da42 Mon Sep 17 00:00:00 2001 From: cepprice Date: Tue, 2 Feb 2021 15:56:57 +0500 Subject: [PATCH] Fix #10540 --- .../activities/FavoritesTreeFragment.java | 58 ++++++++++--------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java b/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java index 866503f477..06e71c1bfd 100644 --- a/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java +++ b/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java @@ -10,6 +10,7 @@ import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.text.Html; +import android.text.Spanned; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -606,29 +607,34 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment implemen } } - private StringBuilder generateHtmlPrint(List groups) { + private String generateHtmlPrint(List groups) { StringBuilder html = new StringBuilder(); html.append("

My Favorites

"); + + int MAX_AMOUNT_OF_POINTS = 100; + int addedPoints = 0; for (FavoriteGroup group : groups) { html.append("

" + group.getDisplayName(app) + "

"); for (FavouritePoint fp : group.getPoints()) { - String url = "geo:" + ((float) fp.getLatitude()) + "," + ((float) fp.getLongitude()) + "?m=" + fp.getName(); - html.append("

" + fp.getDisplayName(app) + " - " + "geo:" - + ((float) fp.getLatitude()) + "," + ((float) fp.getLongitude()) + "
"); - if (fp.isAddressSpecified()) { - html.append(": " + fp.getAddress()); - html.append("
"); + if (addedPoints >= MAX_AMOUNT_OF_POINTS) { + break; } - if (!Algorithms.isEmpty(fp.getDescription())) { - html.append(": " + fp.getDescription()); - } - html.append("

"); + + float lat = (float) fp.getLatitude(); + float lon = (float) fp.getLongitude(); + String url = "geo:" + lat + "," + lon + "?m=" + fp.getName(); + html.append("

" + fp.getDisplayName(app) + " - geo:" + + lat + "," + lon + "

"); + addedPoints++; + } + if (addedPoints >= MAX_AMOUNT_OF_POINTS) { + html.append("

...

"); + break; } } - return html; + return html.toString(); } - private void shareFavourites() { if (favouritesAdapter.isEmpty()) { Toast.makeText(getActivity(), R.string.no_fav_to_save, Toast.LENGTH_LONG).show(); @@ -646,6 +652,7 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment implemen File src = null; File dst = null; + Spanned descriptionOfPoints; @Override protected void onPreExecute() { @@ -662,9 +669,15 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment implemen @Override protected Void doInBackground(Void... params) { + List groups; if (group != null) { helper.saveFile(group.getPoints(), dst); + groups = new ArrayList<>(); + groups.add(group); + } else { + groups = getMyApplication().getFavorites().getFavoriteGroups(); } + descriptionOfPoints = Html.fromHtml(generateHtmlPrint(groups)); return null; } @@ -680,19 +693,12 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment implemen Algorithms.fileCopy(src, dst); } final Intent sendIntent = new Intent(); - sendIntent.setAction(Intent.ACTION_SEND); - List groups; - if (group != null) { - groups = new ArrayList<>(); - groups.add(group); - } else { - groups = getMyApplication().getFavorites().getFavoriteGroups(); - } - sendIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(generateHtmlPrint(groups).toString())); - sendIntent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.share_fav_subject)); - sendIntent.putExtra(Intent.EXTRA_STREAM, AndroidUtils.getUriForFile(getMyApplication(), dst)); - sendIntent.setType("text/plain"); - sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + sendIntent.setAction(Intent.ACTION_SEND) + .putExtra(Intent.EXTRA_SUBJECT, getString(R.string.share_fav_subject)) + .putExtra(Intent.EXTRA_TEXT, descriptionOfPoints) + .putExtra(Intent.EXTRA_STREAM, AndroidUtils.getUriForFile(getMyApplication(), dst)) + .setType("text/plain") + .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); startActivity(sendIntent); } catch (IOException e) { Toast.makeText(getActivity(), "Error sharing favorites: " + e.getMessage(), Toast.LENGTH_SHORT).show();