From 7bfb488f1de1aadfffbff0d08d17cc55280ab648 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Date: Sun, 6 Jul 2025 08:37:36 +0200 Subject: [PATCH] [android] Drop products features on the place page Signed-off-by: Jean-Baptiste Charron --- .../main/cpp/app/organicmaps/Framework.cpp | 70 ---------- .../main/java/app/organicmaps/Framework.java | 11 -- .../app/organicmaps/products/Product.java | 20 --- .../organicmaps/products/ProductsConfig.java | 20 --- .../java/app/organicmaps/util/Constants.java | 8 -- .../widget/placepage/PlacePageView.java | 14 -- .../sections/PlacePageProductsFragment.java | 107 ---------------- .../app/src/main/res/layout/item_product.xml | 11 -- .../main/res/layout/place_page_details.xml | 6 - .../layout/place_page_products_fragment.xml | 121 ------------------ .../app/src/main/res/values-af/strings.xml | 3 - .../app/src/main/res/values-ar/strings.xml | 3 - .../app/src/main/res/values-az/strings.xml | 3 - .../app/src/main/res/values-be/strings.xml | 3 - .../app/src/main/res/values-bg/strings.xml | 3 - .../app/src/main/res/values-ca/strings.xml | 3 - .../app/src/main/res/values-cs/strings.xml | 3 - .../app/src/main/res/values-da/strings.xml | 3 - .../app/src/main/res/values-de/strings.xml | 3 - .../app/src/main/res/values-el/strings.xml | 3 - .../app/src/main/res/values-es/strings.xml | 3 - .../app/src/main/res/values-et/strings.xml | 3 - .../app/src/main/res/values-eu/strings.xml | 3 - .../app/src/main/res/values-fa/strings.xml | 3 - .../app/src/main/res/values-fi/strings.xml | 3 - .../app/src/main/res/values-fr/strings.xml | 3 - .../app/src/main/res/values-gl/strings.xml | 3 - .../app/src/main/res/values-gsw/strings.xml | 3 - .../app/src/main/res/values-hi/strings.xml | 3 - .../app/src/main/res/values-hu/strings.xml | 3 - .../app/src/main/res/values-in/strings.xml | 3 - .../app/src/main/res/values-is/strings.xml | 3 - .../app/src/main/res/values-it/strings.xml | 3 - .../app/src/main/res/values-iw/strings.xml | 3 - .../app/src/main/res/values-ja/strings.xml | 3 - .../app/src/main/res/values-ko/strings.xml | 3 - .../app/src/main/res/values-lt/strings.xml | 3 - .../app/src/main/res/values-lv/strings.xml | 3 - .../app/src/main/res/values-mr/strings.xml | 3 - .../app/src/main/res/values-mt/strings.xml | 3 - .../app/src/main/res/values-nb/strings.xml | 3 - .../app/src/main/res/values-nl/strings.xml | 3 - .../app/src/main/res/values-pl/strings.xml | 3 - .../src/main/res/values-pt-rBR/strings.xml | 3 - .../app/src/main/res/values-pt/strings.xml | 3 - .../app/src/main/res/values-ro/strings.xml | 3 - .../app/src/main/res/values-ru/strings.xml | 3 - .../app/src/main/res/values-sk/strings.xml | 3 - .../app/src/main/res/values-sr/strings.xml | 3 - .../app/src/main/res/values-sv/strings.xml | 3 - .../app/src/main/res/values-sw/strings.xml | 3 - .../app/src/main/res/values-th/strings.xml | 3 - .../app/src/main/res/values-tr/strings.xml | 3 - .../app/src/main/res/values-uk/strings.xml | 3 - .../app/src/main/res/values-vi/strings.xml | 3 - .../src/main/res/values-zh-rTW/strings.xml | 3 - .../app/src/main/res/values-zh/strings.xml | 3 - android/app/src/main/res/values/strings.xml | 3 - 58 files changed, 532 deletions(-) delete mode 100644 android/app/src/main/java/app/organicmaps/products/Product.java delete mode 100644 android/app/src/main/java/app/organicmaps/products/ProductsConfig.java delete mode 100644 android/app/src/main/java/app/organicmaps/widget/placepage/sections/PlacePageProductsFragment.java delete mode 100644 android/app/src/main/res/layout/item_product.xml delete mode 100644 android/app/src/main/res/layout/place_page_products_fragment.xml diff --git a/android/app/src/main/cpp/app/organicmaps/Framework.cpp b/android/app/src/main/cpp/app/organicmaps/Framework.cpp index 01f16ffd3..1086106d5 100644 --- a/android/app/src/main/cpp/app/organicmaps/Framework.cpp +++ b/android/app/src/main/cpp/app/organicmaps/Framework.cpp @@ -1804,74 +1804,4 @@ Java_app_organicmaps_Framework_nativeMemoryWarning(JNIEnv *, jclass) return frm()->MemoryWarning(); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_Framework_nativeShouldShowProducts(JNIEnv * env, jclass) -{ - return frm()->ShouldShowProducts(); -} - -JNIEXPORT jobject JNICALL -Java_app_organicmaps_Framework_nativeGetProductsConfiguration(JNIEnv * env, jclass) -{ - auto config = frm()->GetProductsConfiguration(); - if (!config) return nullptr; - - static jclass const productClass = jni::GetGlobalClassRef( - env, - "app/organicmaps/products/Product" - ); - static jmethodID const productConstructor = jni::GetConstructorID( - env, - productClass, - "(Ljava/lang/String;Ljava/lang/String;)V" - ); - - jobjectArray products = jni::ToJavaArray( - env, - productClass, - config->GetProducts(), - [](JNIEnv * env, products::ProductsConfig::Product const & product) - { - jni::TScopedLocalRef const title(env, jni::ToJavaString(env, product.GetTitle())); - jni::TScopedLocalRef const link(env, jni::ToJavaString(env, product.GetLink())); - - return env->NewObject( - productClass, - productConstructor, - title.get(), - link.get() - ); - }); - - static jclass const productsConfigClass = jni::GetGlobalClassRef( - env, - "app/organicmaps/products/ProductsConfig" - ); - static jmethodID const productsConfigConstructor = jni::GetConstructorID( - env, - productsConfigClass, - "(Ljava/lang/String;[Lapp/organicmaps/products/Product;)V" - ); - - jni::TScopedLocalRef const placePagePrompt(env, jni::ToJavaString(env, config->GetPlacePagePrompt())); - return env->NewObject(productsConfigClass, productsConfigConstructor, placePagePrompt.get(), products); -} - -JNIEXPORT void JNICALL -Java_app_organicmaps_Framework_nativeDidCloseProductsPopup(JNIEnv * env, jclass, jstring reason) -{ - frm()->DidCloseProductsPopup(frm()->FromString(jni::ToNativeString(env, reason))); -} - -JNIEXPORT void JNICALL -Java_app_organicmaps_Framework_nativeDidSelectProduct(JNIEnv * env, jclass, jstring title, jstring link) -{ - products::ProductsConfig::Product product( - jni::ToNativeString(env, title), - jni::ToNativeString(env, link) - ); - - frm()->DidSelectProduct(product); -} - } // extern "C" diff --git a/android/app/src/main/java/app/organicmaps/Framework.java b/android/app/src/main/java/app/organicmaps/Framework.java index 9d98ab611..fabb98bdd 100644 --- a/android/app/src/main/java/app/organicmaps/Framework.java +++ b/android/app/src/main/java/app/organicmaps/Framework.java @@ -13,7 +13,6 @@ import app.organicmaps.api.RequestType; import app.organicmaps.bookmarks.data.DistanceAndAzimut; import app.organicmaps.bookmarks.data.FeatureId; import app.organicmaps.bookmarks.data.MapObject; -import app.organicmaps.products.ProductsConfig; import app.organicmaps.sdk.routing.JunctionInfo; import app.organicmaps.sdk.routing.RouteMarkData; import app.organicmaps.sdk.routing.RouteMarkType; @@ -347,15 +346,5 @@ public class Framework public static native boolean nativeHasPlacePageInfo(); public static native void nativeMemoryWarning(); - - public static native boolean nativeShouldShowProducts(); - - @Nullable - public static native ProductsConfig nativeGetProductsConfiguration(); - - public static native void nativeDidCloseProductsPopup(String reason); - - public static native void nativeDidSelectProduct(String title, String link); - public static native void nativeSaveRoute(); } diff --git a/android/app/src/main/java/app/organicmaps/products/Product.java b/android/app/src/main/java/app/organicmaps/products/Product.java deleted file mode 100644 index 18e354c84..000000000 --- a/android/app/src/main/java/app/organicmaps/products/Product.java +++ /dev/null @@ -1,20 +0,0 @@ -package app.organicmaps.products; - -import androidx.annotation.Keep; -import androidx.annotation.Nullable; - -// Called from JNI. -@Keep -@SuppressWarnings("unused") -public class Product { - @Nullable - public String title; - - @Nullable - public String link; - - public Product(@Nullable String title, @Nullable String link) { - this.title = title; - this.link = link; - } -} diff --git a/android/app/src/main/java/app/organicmaps/products/ProductsConfig.java b/android/app/src/main/java/app/organicmaps/products/ProductsConfig.java deleted file mode 100644 index 9fb8d50f6..000000000 --- a/android/app/src/main/java/app/organicmaps/products/ProductsConfig.java +++ /dev/null @@ -1,20 +0,0 @@ -package app.organicmaps.products; - -import androidx.annotation.Keep; -import androidx.annotation.Nullable; - -// Called from JNI. -@Keep -@SuppressWarnings("unused") -public class ProductsConfig { - public ProductsConfig(@Nullable String placePagePrompt, @Nullable Product[] products) { - this.placePagePrompt = placePagePrompt; - this.products = products; - } - - @Nullable - public String placePagePrompt; - - @Nullable - public Product[] products; -} diff --git a/android/app/src/main/java/app/organicmaps/util/Constants.java b/android/app/src/main/java/app/organicmaps/util/Constants.java index cbc0dce3c..2efb04472 100644 --- a/android/app/src/main/java/app/organicmaps/util/Constants.java +++ b/android/app/src/main/java/app/organicmaps/util/Constants.java @@ -56,13 +56,5 @@ public final class Constants public static final String XIAOMI = "XIAOMI"; } - public static class ProductsPopupCloseReason - { - public static final String CLOSE = "close"; - public static final String REMIND_LATER = "remind_later"; - public static final String ALREADY_DONATED = "already_donated"; - public static final String SELECT_PRODUCT = "select_product"; - } - private Constants() {} } diff --git a/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java b/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java index f47e0e297..c94dc1811 100644 --- a/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java +++ b/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java @@ -70,7 +70,6 @@ public class PlacePageView extends Fragment implements View.OnClickListener, { private static final String PREF_COORDINATES_FORMAT = "coordinates_format"; private static final String BOOKMARK_FRAGMENT_TAG = "BOOKMARK_FRAGMENT_TAG"; - private static final String PRODUCTS_FRAGMENT_TAG = "PRODUCTS_FRAGMENT_TAG"; private static final String WIKIPEDIA_FRAGMENT_TAG = "WIKIPEDIA_FRAGMENT_TAG"; private static final String PHONE_FRAGMENT_TAG = "PHONE_FRAGMENT_TAG"; private static final String OPENING_HOURS_FRAGMENT_TAG = "OPENING_HOURS_FRAGMENT_TAG"; @@ -391,18 +390,6 @@ public class PlacePageView extends Fragment implements View.OnClickListener, updateViewFragment(PlacePageWikipediaFragment.class, WIKIPEDIA_FRAGMENT_TAG, R.id.place_page_wikipedia_fragment, hasWikipediaEntry()); } -// private boolean hasProductsEntry() -// { -// return Framework.nativeShouldShowProducts(); -// } - -// private void updateProductsView() -// { -// var hasProductsEntry = hasProductsEntry(); -// -// updateViewFragment(PlacePageProductsFragment.class, PRODUCTS_FRAGMENT_TAG, R.id.place_page_products_fragment, hasProductsEntry); -// } - private void setTextAndColorizeSubtitle() { String text = mMapObject.getSubtitle(); @@ -493,7 +480,6 @@ public class PlacePageView extends Fragment implements View.OnClickListener, } updateLinksView(); updateOpeningHoursView(); - //updateProductsView(); Disable begging message on placepage updateWikipediaView(); updateBookmarkView(); updatePhoneView(); diff --git a/android/app/src/main/java/app/organicmaps/widget/placepage/sections/PlacePageProductsFragment.java b/android/app/src/main/java/app/organicmaps/widget/placepage/sections/PlacePageProductsFragment.java deleted file mode 100644 index 9982f0cdf..000000000 --- a/android/app/src/main/java/app/organicmaps/widget/placepage/sections/PlacePageProductsFragment.java +++ /dev/null @@ -1,107 +0,0 @@ -package app.organicmaps.widget.placepage.sections; - -import static androidx.core.util.ObjectsCompat.requireNonNull; - -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; -import android.widget.LinearLayout; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; - -import java.util.Objects; - -import app.organicmaps.Framework; -import app.organicmaps.R; -import app.organicmaps.products.Product; -import app.organicmaps.products.ProductsConfig; -import app.organicmaps.util.Constants; -import app.organicmaps.util.UiUtils; -import app.organicmaps.util.Utils; - -public class PlacePageProductsFragment extends Fragment -{ - @Nullable - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) - { - return inflater.inflate(R.layout.place_page_products_fragment, container, false); - } - - @Override - public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) - { - super.onViewCreated(view, savedInstanceState); - - var config = Framework.nativeGetProductsConfiguration(); - if (config != null && isValidConfig(config)) - { - UiUtils.show(view); - - updateView(view, config); - } else - { - UiUtils.hide(view); - } - } - - private void updateView(@NonNull View view, @NonNull ProductsConfig config) - { - var layoutInflater = LayoutInflater.from(view.getContext()); - - TextView productsPrompt = requireNonNull(view.findViewById(R.id.products_prompt)); - LinearLayout productsButtons = requireNonNull(view.findViewById(R.id.products_buttons)); - View closeButton = requireNonNull(view.findViewById(R.id.products_close)); - View productsRemindLater = requireNonNull(view.findViewById(R.id.products_remind_later)); - View alreadyDonated = requireNonNull(view.findViewById(R.id.products_already_donated)); - - productsPrompt.setText(config.placePagePrompt); - - productsButtons.removeAllViews(); - - for (var product : Objects.requireNonNull(config.products)) - { - var button = (Button) layoutInflater.inflate(R.layout.item_product, productsButtons, false); - button.setText(product.title); - button.setOnClickListener((v) -> { - onProductSelected(product); - }); - - productsButtons.addView(button); - } - - closeButton.setOnClickListener((v) -> { - closeWithReason(view, Constants.ProductsPopupCloseReason.CLOSE); - }); - - productsRemindLater.setOnClickListener((v) -> { - closeWithReason(view, Constants.ProductsPopupCloseReason.REMIND_LATER); - }); - - alreadyDonated.setOnClickListener((v) -> { - closeWithReason(view, Constants.ProductsPopupCloseReason.ALREADY_DONATED); - }); - } - - private void closeWithReason(View view, String reason) - { - Framework.nativeDidCloseProductsPopup(reason); - UiUtils.hide(view); - } - - private void onProductSelected(Product product) - { - Utils.openUrl(requireActivity(), product.link); - Framework.nativeDidSelectProduct(product.title, product.link); - } - - private boolean isValidConfig(@NonNull ProductsConfig config) - { - return config.products != null && config.products.length > 0; - } -} diff --git a/android/app/src/main/res/layout/item_product.xml b/android/app/src/main/res/layout/item_product.xml deleted file mode 100644 index 89bc1f430..000000000 --- a/android/app/src/main/res/layout/item_product.xml +++ /dev/null @@ -1,11 +0,0 @@ - -