From f8864f63560d81d16aaaa28fd9d0da62ff45ec2a Mon Sep 17 00:00:00 2001 From: Roman Tsisyk Date: Wed, 6 Dec 2023 17:00:09 +0200 Subject: [PATCH] [android] Happy Christmas Donations Signed-off-by: Roman Tsisyk --- .../main/java/app/organicmaps/MwmActivity.java | 2 +- .../app/organicmaps/help/HelpFragment.java | 10 ++++++---- .../maplayer/MapButtonsController.java | 7 ++++++- .../main/java/app/organicmaps/util/Config.java | 18 +++++++++++++++--- .../util/bottomsheet/MenuAdapter.java | 9 ++++++++- .../main/res/drawable/ic_christmas_tree.xml | 16 ++++++++++++++++ 6 files changed, 52 insertions(+), 10 deletions(-) create mode 100644 android/app/src/main/res/drawable/ic_christmas_tree.xml diff --git a/android/app/src/main/java/app/organicmaps/MwmActivity.java b/android/app/src/main/java/app/organicmaps/MwmActivity.java index c94e851ec6..2a15fda177 100644 --- a/android/app/src/main/java/app/organicmaps/MwmActivity.java +++ b/android/app/src/main/java/app/organicmaps/MwmActivity.java @@ -2154,7 +2154,7 @@ public class MwmActivity extends BaseMwmFragmentActivity getDownloadMapsCounter(), this::onDownloadMapsOptionSelected )); - mDonatesUrl = Config.getDonateUrl(); + mDonatesUrl = Config.getDonateUrl(getApplicationContext()); if (!TextUtils.isEmpty(mDonatesUrl)) items.add(new MenuBottomSheetItem(R.string.donate, R.drawable.ic_donate, this::onDonateOptionSelected)); items.add(new MenuBottomSheetItem(R.string.settings, R.drawable.ic_settings, this::onSettingsOptionSelected)); diff --git a/android/app/src/main/java/app/organicmaps/help/HelpFragment.java b/android/app/src/main/java/app/organicmaps/help/HelpFragment.java index 7887c4dee2..c3a56caf01 100644 --- a/android/app/src/main/java/app/organicmaps/help/HelpFragment.java +++ b/android/app/src/main/java/app/organicmaps/help/HelpFragment.java @@ -38,10 +38,7 @@ public class HelpFragment extends BaseMwmFragment implements View.OnClickListene @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - mDonateUrl = Config.getDonateUrl(); - if (TextUtils.isEmpty(mDonateUrl) && !BuildConfig.FLAVOR.equals("google") && !BuildConfig.FLAVOR.equals("huawei")) - mDonateUrl = getResources().getString(R.string.translated_om_site_url) + "donate/"; - + mDonateUrl = Config.getDonateUrl(requireContext()); View root = inflater.inflate(R.layout.about, container, false); ((TextView) root.findViewById(R.id.version)) @@ -78,7 +75,12 @@ public class HelpFragment extends BaseMwmFragment implements View.OnClickListene if (TextUtils.isEmpty(mDonateUrl)) donateView.setVisibility(View.GONE); else + { + if (Config.isNY()) + donateView.setCompoundDrawablesRelativeWithIntrinsicBounds(R.drawable.ic_christmas_tree, 0, + R.drawable.ic_christmas_tree, 0); setupItem(R.id.donate, isLandscape, root); + } if (BuildConfig.REVIEW_URL.isEmpty()) root.findViewById(R.id.rate).setVisibility(View.GONE); diff --git a/android/app/src/main/java/app/organicmaps/maplayer/MapButtonsController.java b/android/app/src/main/java/app/organicmaps/maplayer/MapButtonsController.java index d7ebb2b9ad..4750faa6d1 100644 --- a/android/app/src/main/java/app/organicmaps/maplayer/MapButtonsController.java +++ b/android/app/src/main/java/app/organicmaps/maplayer/MapButtonsController.java @@ -2,6 +2,7 @@ package app.organicmaps.maplayer; import android.content.Context; import android.os.Bundle; +import android.text.TextUtils; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; @@ -24,6 +25,7 @@ import app.organicmaps.routing.RoutingController; import app.organicmaps.util.Config; import app.organicmaps.util.ThemeUtils; import app.organicmaps.util.UiUtils; +import app.organicmaps.util.Utils; import app.organicmaps.widget.menu.MyPositionButton; import app.organicmaps.widget.placepage.PlacePageViewModel; import com.google.android.material.badge.BadgeDrawable; @@ -85,7 +87,10 @@ public class MapButtonsController extends Fragment final FloatingActionButton helpButton = mFrame.findViewById(R.id.help_button); if (helpButton != null) { - helpButton.setImageResource(R.drawable.logo); + if (Config.isNY() && !TextUtils.isEmpty(Config.getDonateUrl(requireContext()))) + helpButton.setImageResource(R.drawable.ic_christmas_tree); + else + helpButton.setImageResource(R.drawable.logo); // Keep this button colorful in normal theme. if (!ThemeUtils.isNightTheme(requireContext())) helpButton.getDrawable().setTintList(null); diff --git a/android/app/src/main/java/app/organicmaps/util/Config.java b/android/app/src/main/java/app/organicmaps/util/Config.java index 518fb4dc31..daea71c909 100644 --- a/android/app/src/main/java/app/organicmaps/util/Config.java +++ b/android/app/src/main/java/app/organicmaps/util/Config.java @@ -3,6 +3,7 @@ package app.organicmaps.util; import android.content.Context; import android.content.SharedPreferences; import android.os.Build; +import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.preference.PreferenceManager; @@ -339,10 +340,21 @@ public final class Config nativeSetTransliteration(value); } - @NonNull - public static String getDonateUrl() + public static boolean isNY() { - return getString(KEY_DONATE_URL); + return getBool("NY"); + } + + @NonNull + @SuppressWarnings("ConstantConditions") // BuildConfig + public static String getDonateUrl(@NonNull Context context) + { + final String url = getString(KEY_DONATE_URL); + // Enable donations by default if not Google or Huawei. Replace organicmaps.app/donate/ with localized page. + if ((url.isEmpty() && !BuildConfig.FLAVOR.equals("google") && !BuildConfig.FLAVOR.equals("huawei")) || + url.endsWith("organicmaps.app/donate/")) + return context.getString(R.string.translated_om_site_url) + "donate/"; + return url; } public static void init(@NonNull Context context) diff --git a/android/app/src/main/java/app/organicmaps/util/bottomsheet/MenuAdapter.java b/android/app/src/main/java/app/organicmaps/util/bottomsheet/MenuAdapter.java index 2f9ee68d68..e770b113e4 100644 --- a/android/app/src/main/java/app/organicmaps/util/bottomsheet/MenuAdapter.java +++ b/android/app/src/main/java/app/organicmaps/util/bottomsheet/MenuAdapter.java @@ -12,6 +12,7 @@ import androidx.annotation.Nullable; import androidx.recyclerview.widget.RecyclerView; import app.organicmaps.R; +import app.organicmaps.util.Config; import java.util.ArrayList; @@ -48,7 +49,13 @@ public class MenuAdapter extends RecyclerView.Adapter { final MenuBottomSheetItem item = dataSet.get(position); final ImageView iv = viewHolder.getIconImageView(); - iv.setImageResource(item.iconRes); + if (item.iconRes == R.drawable.ic_donate && Config.isNY()) + { + iv.setImageResource(R.drawable.ic_christmas_tree); + iv.setImageTintMode(null); + } + else + iv.setImageResource(item.iconRes); viewHolder.getContainer().setOnClickListener((v) -> onMenuItemClick(item)); viewHolder.getTitleTextView().setText(item.titleRes); TextView badge = viewHolder.getBadgeTextView(); diff --git a/android/app/src/main/res/drawable/ic_christmas_tree.xml b/android/app/src/main/res/drawable/ic_christmas_tree.xml new file mode 100644 index 0000000000..bdcb7c5abc --- /dev/null +++ b/android/app/src/main/res/drawable/ic_christmas_tree.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + +