From ac1168664694563d470739c428b4dbc49347da42 Mon Sep 17 00:00:00 2001 From: cepprice Date: Tue, 2 Feb 2021 15:56:57 +0500 Subject: [PATCH 1/2] 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(); From 31d31f10235ea674cccdb8a5ecf1aea76a7af1ce Mon Sep 17 00:00:00 2001 From: cepprice Date: Tue, 2 Feb 2021 18:41:11 +0500 Subject: [PATCH 2/2] Small edit --- .../activities/FavoritesTreeFragment.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java b/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java index 06e71c1bfd..823cb4b740 100644 --- a/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java +++ b/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java @@ -89,6 +89,8 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment implemen public static final int IMPORT_FAVOURITES_ID = 7; public static final String GROUP_EXPANDED_POSTFIX = "_group_expanded"; + private static final int MAX_POINTS_IN_DESCRIPTION = 100; + private FavouritesAdapter favouritesAdapter; private FavouritesDbHelper helper; @@ -611,23 +613,28 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment implemen 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) + "

"); + html.append("

").append(group.getDisplayName(app)).append("

"); for (FavouritePoint fp : group.getPoints()) { - if (addedPoints >= MAX_AMOUNT_OF_POINTS) { + if (addedPoints >= MAX_POINTS_IN_DESCRIPTION) { break; } 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 + "

"); + html.append("

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

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

...

"); break; }