diff --git a/android/src/com/mapswithme/maps/MwmActivity.java b/android/src/com/mapswithme/maps/MwmActivity.java index c43170e7e1..df4d668dfc 100644 --- a/android/src/com/mapswithme/maps/MwmActivity.java +++ b/android/src/com/mapswithme/maps/MwmActivity.java @@ -72,9 +72,10 @@ import com.mapswithme.maps.maplayer.subway.SubwayManager; import com.mapswithme.maps.maplayer.traffic.OnTrafficLayerToggleListener; import com.mapswithme.maps.maplayer.traffic.TrafficManager; import com.mapswithme.maps.maplayer.traffic.widget.TrafficButton; +import com.mapswithme.maps.purchase.AdsRemovalPurchaseCallback; import com.mapswithme.maps.purchase.PurchaseFactory; import com.mapswithme.maps.purchase.PurchaseController; -import com.mapswithme.maps.purchase.PurchaseControllerProvider; +import com.mapswithme.maps.purchase.AdsRemovalPurchaseControllerProvider; import com.mapswithme.maps.routing.NavigationController; import com.mapswithme.maps.routing.RoutePointInfo; import com.mapswithme.maps.routing.RoutingBottomMenuListener; @@ -148,7 +149,7 @@ public class MwmActivity extends BaseMwmFragmentActivity OnTrafficLayerToggleListener, OnSubwayLayerToggleListener, BookmarkManager.BookmarksCatalogListener, - PurchaseControllerProvider + AdsRemovalPurchaseControllerProvider { private static final Logger LOGGER = LoggerFactory.INSTANCE.getLogger(LoggerFactory.Type.MISC); private static final String TAG = MwmActivity.class.getSimpleName(); @@ -233,8 +234,8 @@ public class MwmActivity extends BaseMwmFragmentActivity @Nullable private PlacePageTracker mPlacePageTracker; @NonNull - private PurchaseController mAdsRemovalPurchaseController = - PurchaseFactory.ADS_REMOVAL.createPurchaseController(); + private PurchaseController mAdsRemovalPurchaseController = + PurchaseFactory.createPurchaseController(); @NonNull private final OnClickListener mOnMyPositionClickListener = new CurrentPositionClickListener(); @@ -1884,9 +1885,9 @@ public class MwmActivity extends BaseMwmFragmentActivity }); } - @NonNull @Override - public PurchaseController getAdsRemovalPurchaseController() + @NonNull + public PurchaseController getAdsRemovalPurchaseController() { return mAdsRemovalPurchaseController; } diff --git a/android/src/com/mapswithme/maps/purchase/AdsRemovalPurchaseControllerProvider.java b/android/src/com/mapswithme/maps/purchase/AdsRemovalPurchaseControllerProvider.java new file mode 100644 index 0000000000..324adfcf94 --- /dev/null +++ b/android/src/com/mapswithme/maps/purchase/AdsRemovalPurchaseControllerProvider.java @@ -0,0 +1,9 @@ +package com.mapswithme.maps.purchase; + +import android.support.annotation.NonNull; + +public interface AdsRemovalPurchaseControllerProvider +{ + @NonNull + PurchaseController getAdsRemovalPurchaseController(); +} diff --git a/android/src/com/mapswithme/maps/purchase/AdsRemovalPurchaseDialog.java b/android/src/com/mapswithme/maps/purchase/AdsRemovalPurchaseDialog.java new file mode 100644 index 0000000000..d7816187a1 --- /dev/null +++ b/android/src/com/mapswithme/maps/purchase/AdsRemovalPurchaseDialog.java @@ -0,0 +1,28 @@ +package com.mapswithme.maps.purchase; + +import android.content.Context; +import android.support.annotation.Nullable; + +import com.mapswithme.maps.base.BaseMwmDialogFragment; + +public class AdsRemovalPurchaseDialog extends BaseMwmDialogFragment +{ + @Nullable + private PurchaseController mController; + + @Override + public void onAttach(Context context) + { + super.onAttach(context); + mController = ((AdsRemovalPurchaseControllerProvider) context).getAdsRemovalPurchaseController(); + } + + @Override + public void onDetach() + { + super.onDetach(); + mController = null; + } + + // UI implementation is coming soon. +} diff --git a/android/src/com/mapswithme/maps/purchase/PurchaseControllerProvider.java b/android/src/com/mapswithme/maps/purchase/PurchaseControllerProvider.java deleted file mode 100644 index 46912d22ac..0000000000 --- a/android/src/com/mapswithme/maps/purchase/PurchaseControllerProvider.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.mapswithme.maps.purchase; - -import android.support.annotation.NonNull; - -public interface PurchaseControllerProvider -{ - @NonNull - public PurchaseController getAdsRemovalPurchaseController(); -} diff --git a/android/src/com/mapswithme/maps/purchase/PurchaseFactory.java b/android/src/com/mapswithme/maps/purchase/PurchaseFactory.java index d4e0060325..b4f6032a4e 100644 --- a/android/src/com/mapswithme/maps/purchase/PurchaseFactory.java +++ b/android/src/com/mapswithme/maps/purchase/PurchaseFactory.java @@ -4,39 +4,20 @@ import android.support.annotation.NonNull; import com.android.billingclient.api.BillingClient; -public enum PurchaseFactory +public class PurchaseFactory { - ADS_REMOVAL - { - @NonNull - @Override - public PurchaseValidator createPurchaseValidator() - { - return new AdsRemovalPurchaseValidator(); - } - - @NonNull - @Override - BillingManager createBillingManager() - { - return new PlayStoreBillingManager(BillingClient.SkuType.SUBS); - } - - @Override - public PurchaseController createPurchaseController() - { - BillingManager billingManager = createBillingManager(); - PurchaseValidator validator = createPurchaseValidator(); - return new AdsRemovalPurchaseController(validator, billingManager, - "ads.removal.monthly.test"); - } - }; + private PurchaseFactory() + { + // Utility class. + } @NonNull - abstract PurchaseValidator createPurchaseValidator(); - - @NonNull - abstract BillingManager createBillingManager(); - - public abstract PurchaseController createPurchaseController(); + public static PurchaseController createPurchaseController() + { + BillingManager billingManager + = new PlayStoreBillingManager(BillingClient.SkuType.SUBS); + PurchaseValidator validator = new AdsRemovalPurchaseValidator(); + return new AdsRemovalPurchaseController(validator, billingManager, + "ads.removal.monthly.test"); + } } diff --git a/android/src/com/mapswithme/maps/widget/placepage/BannerController.java b/android/src/com/mapswithme/maps/widget/placepage/BannerController.java index b9f675e780..1519fedcd8 100644 --- a/android/src/com/mapswithme/maps/widget/placepage/BannerController.java +++ b/android/src/com/mapswithme/maps/widget/placepage/BannerController.java @@ -6,6 +6,8 @@ import android.content.Context; import android.content.res.Resources; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentActivity; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.MotionEvent; @@ -21,6 +23,7 @@ import com.mapswithme.maps.ads.CompoundNativeAdLoader; import com.mapswithme.maps.ads.MwmNativeAd; import com.mapswithme.maps.ads.NativeAdError; import com.mapswithme.maps.ads.NativeAdListener; +import com.mapswithme.maps.purchase.AdsRemovalPurchaseDialog; import com.mapswithme.maps.purchase.PurchaseController; import com.mapswithme.util.Config; import com.mapswithme.util.ThemeUtils; @@ -175,6 +178,10 @@ final class BannerController private void handleAdsRemoval() { + FragmentActivity activity = (FragmentActivity) mBannerView.getContext(); + AdsRemovalPurchaseDialog fragment + = (AdsRemovalPurchaseDialog) Fragment.instantiate(activity, AdsRemovalPurchaseDialog.class.getName()); + fragment.show(activity.getSupportFragmentManager(), null); } private void setErrorStatus(boolean value)