diff --git a/android/app/src/main/java/app/organicmaps/bookmarks/data/MapObject.java b/android/app/src/main/java/app/organicmaps/bookmarks/data/MapObject.java index 6249cd6564..750c9bb263 100644 --- a/android/app/src/main/java/app/organicmaps/bookmarks/data/MapObject.java +++ b/android/app/src/main/java/app/organicmaps/bookmarks/data/MapObject.java @@ -1,5 +1,6 @@ package app.organicmaps.bookmarks.data; +import android.net.Uri; import android.os.Parcel; import android.text.TextUtils; @@ -269,9 +270,9 @@ public class MapObject implements PlacePageData } @NonNull - public String getWebsiteUrl(boolean strip) + public String getWebsiteUrl(boolean strip, @NonNull Metadata.MetadataType type) { - final String website = getMetadata(Metadata.MetadataType.FMD_WEBSITE); + final String website = Uri.decode(getMetadata(type)); final int len = website.length(); if (strip && len > 1) { diff --git a/android/app/src/main/java/app/organicmaps/bookmarks/data/Metadata.java b/android/app/src/main/java/app/organicmaps/bookmarks/data/Metadata.java index 8641205f06..c79e25f7ac 100644 --- a/android/app/src/main/java/app/organicmaps/bookmarks/data/Metadata.java +++ b/android/app/src/main/java/app/organicmaps/bookmarks/data/Metadata.java @@ -63,7 +63,8 @@ public class Metadata implements Parcelable FMD_CAPACITY(42), FMD_WHEELCHAIR(43), FMD_LOCAL_REF(44), - FMD_DRIVE_THROUGH(45); + FMD_DRIVE_THROUGH(45), + FMD_WEBSITE_MENU(46); private final int mMetaType; MetadataType(int metadataType) diff --git a/android/app/src/main/java/app/organicmaps/widget/placepage/sections/PlacePageLinksFragment.java b/android/app/src/main/java/app/organicmaps/widget/placepage/sections/PlacePageLinksFragment.java index be1839c4f8..ff43e9f6f8 100644 --- a/android/app/src/main/java/app/organicmaps/widget/placepage/sections/PlacePageLinksFragment.java +++ b/android/app/src/main/java/app/organicmaps/widget/placepage/sections/PlacePageLinksFragment.java @@ -48,6 +48,8 @@ public class PlacePageLinksFragment extends Fragment implements Observer openUrl(Metadata.MetadataType.FMD_WEBSITE)); mWebsite.setOnLongClickListener((v) -> copyUrl(mWebsite, Metadata.MetadataType.FMD_WEBSITE)); + mWebsiteMenu = mFrame.findViewById(R.id.ll__place_website_menu); + mTvWebsiteMenuSubsite = mFrame.findViewById(R.id.tv__place_website_menu_subtitle); + mWebsiteMenu.setOnClickListener((v) -> openUrl(Metadata.MetadataType.FMD_WEBSITE_MENU)); + mWebsiteMenu.setOnLongClickListener((v) -> copyUrl(mWebsiteMenu, Metadata.MetadataType.FMD_WEBSITE_MENU)); + mEmail = mFrame.findViewById(R.id.ll__place_email); mTvEmail = mFrame.findViewById(R.id.tv__place_email); mEmail.setOnClickListener(v -> { @@ -178,8 +187,11 @@ public class PlacePageLinksFragment extends Fragment implements Observer items = new ArrayList<>(); items.add(url); - final String title = type == Metadata.MetadataType.FMD_WEBSITE ? - mMapObject.getWebsiteUrl(false /* strip */) : mMapObject.getMetadata(type); + final String title = switch (type){ + case FMD_WEBSITE -> mMapObject.getWebsiteUrl(false /* strip */, Metadata.MetadataType.FMD_WEBSITE); + case FMD_WEBSITE_MENU -> mMapObject.getWebsiteUrl(false /* strip */, Metadata.MetadataType.FMD_WEBSITE_MENU); + default -> mMapObject.getMetadata(type); + }; // Add user names for social media if available if (!TextUtils.isEmpty(title) && !title.equals(url) && !title.contains("/")) items.add(title); @@ -194,7 +206,9 @@ public class PlacePageLinksFragment extends Fragment implements Observer + + diff --git a/android/app/src/main/res/layout/place_page_links_fragment.xml b/android/app/src/main/res/layout/place_page_links_fragment.xml index a970397d82..30abf48975 100644 --- a/android/app/src/main/res/layout/place_page_links_fragment.xml +++ b/android/app/src/main/res/layout/place_page_links_fragment.xml @@ -5,6 +5,7 @@ android:layout_height="match_parent" android:orientation="vertical"> + diff --git a/android/app/src/main/res/layout/place_page_website_menu.xml b/android/app/src/main/res/layout/place_page_website_menu.xml new file mode 100644 index 0000000000..4fd9cd1505 --- /dev/null +++ b/android/app/src/main/res/layout/place_page_website_menu.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + +