Fix subscription UI issues
This commit is contained in:
parent
1ee6f36724
commit
855b717dfe
9 changed files with 214 additions and 54 deletions
|
@ -43,6 +43,7 @@
|
||||||
android:layout_margin="@dimen/card_padding">
|
android:layout_margin="@dimen/card_padding">
|
||||||
|
|
||||||
<include layout="@layout/purchase_dialog_card_button"/>
|
<include layout="@layout/purchase_dialog_card_button"/>
|
||||||
|
<include layout="@layout/purchase_dialog_card_button_disabled"/>
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
|
|
53
OsmAnd/res/layout/purchase_dialog_card_button_disabled.xml
Normal file
53
OsmAnd/res/layout/purchase_dialog_card_button_disabled.xml
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:osmand="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="?attr/wikivoyage_secondary_btn_bg">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/card_button_disabled"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="?attr/selectableItemBackgroundBorderless"
|
||||||
|
android:gravity="center"
|
||||||
|
android:minHeight="@dimen/card_button_min_size"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingLeft="@dimen/list_content_padding"
|
||||||
|
android:paddingTop="@dimen/list_header_padding"
|
||||||
|
android:paddingRight="@dimen/list_content_padding"
|
||||||
|
android:paddingBottom="@dimen/list_header_padding">
|
||||||
|
|
||||||
|
<ProgressBar
|
||||||
|
android:id="@+id/card_button_progress"
|
||||||
|
android:layout_width="@dimen/card_button_progress_size"
|
||||||
|
android:layout_height="@dimen/card_button_progress_size"
|
||||||
|
android:indeterminate="true"
|
||||||
|
android:visibility="gone" />
|
||||||
|
|
||||||
|
<net.osmand.plus.widgets.TextViewEx
|
||||||
|
android:id="@+id/card_button_title"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
android:letterSpacing="@dimen/text_button_letter_spacing"
|
||||||
|
android:textColor="@color/wikivoyage_secondary_text"
|
||||||
|
android:textSize="@dimen/text_button_text_size"
|
||||||
|
osmand:typeface="@string/font_roboto_medium"
|
||||||
|
tools:text="Buy - 5€" />
|
||||||
|
|
||||||
|
<net.osmand.plus.widgets.TextViewEx
|
||||||
|
android:id="@+id/card_button_subtitle"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
android:letterSpacing="@dimen/text_button_letter_spacing"
|
||||||
|
android:textColor="@color/wikivoyage_secondary_text"
|
||||||
|
android:textSize="@dimen/text_button_text_size"
|
||||||
|
osmand:typeface="@string/font_roboto_regular"
|
||||||
|
tools:text="One time purchase" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</FrameLayout>
|
|
@ -47,8 +47,9 @@
|
||||||
|
|
||||||
<net.osmand.plus.widgets.TextViewEx
|
<net.osmand.plus.widgets.TextViewEx
|
||||||
android:id="@+id/description"
|
android:id="@+id/description"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
android:textColor="?attr/card_description_text_color"
|
android:textColor="?attr/card_description_text_color"
|
||||||
android:textSize="@dimen/default_desc_text_size"
|
android:textSize="@dimen/default_desc_text_size"
|
||||||
osmand:typeface="@string/font_roboto_regular"
|
osmand:typeface="@string/font_roboto_regular"
|
||||||
|
@ -58,6 +59,7 @@
|
||||||
android:id="@+id/discount_banner_regular"
|
android:id="@+id/discount_banner_regular"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="bottom"
|
||||||
android:layout_marginStart="@dimen/list_item_button_padding"
|
android:layout_marginStart="@dimen/list_item_button_padding"
|
||||||
android:layout_marginLeft="@dimen/list_item_button_padding"
|
android:layout_marginLeft="@dimen/list_item_button_padding"
|
||||||
android:background="?attr/text_rounded_bg_regular"
|
android:background="?attr/text_rounded_bg_regular"
|
||||||
|
@ -70,6 +72,7 @@
|
||||||
android:id="@+id/discount_banner_active"
|
android:id="@+id/discount_banner_active"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="bottom"
|
||||||
android:layout_marginStart="@dimen/list_item_button_padding"
|
android:layout_marginStart="@dimen/list_item_button_padding"
|
||||||
android:layout_marginLeft="@dimen/list_item_button_padding"
|
android:layout_marginLeft="@dimen/list_item_button_padding"
|
||||||
android:background="?attr/text_rounded_bg_active"
|
android:background="?attr/text_rounded_bg_active"
|
||||||
|
@ -83,6 +86,7 @@
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/button_view"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
|
@ -92,6 +96,7 @@
|
||||||
android:id="@+id/button"
|
android:id="@+id/button"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="@dimen/dialog_button_height"
|
android:layout_height="@dimen/dialog_button_height"
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:padding="@dimen/list_header_padding">
|
android:padding="@dimen/list_header_padding">
|
||||||
|
@ -120,6 +125,39 @@
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/button_ex_view"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:background="?attr/wikivoyage_primary_btn_bg">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/button_ex"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="@dimen/dialog_button_height"
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
|
android:gravity="center"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:padding="@dimen/list_header_padding">
|
||||||
|
|
||||||
|
<net.osmand.plus.widgets.TextViewEx
|
||||||
|
android:id="@+id/button_ex_title"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
android:letterSpacing="@dimen/text_button_letter_spacing"
|
||||||
|
android:maxWidth="@dimen/dialog_button_ex_max_width"
|
||||||
|
android:minWidth="@dimen/dialog_button_ex_min_width"
|
||||||
|
android:textColor="@color/color_white"
|
||||||
|
android:textSize="@dimen/text_button_text_size"
|
||||||
|
osmand:typeface="@string/font_roboto_medium"
|
||||||
|
tools:text="7,99€" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<View
|
<View
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
- For wording and consistency, please note https://osmand.net/help-online?id=technical-articles#Creating_a_Consistent_User_Experience
|
- For wording and consistency, please note https://osmand.net/help-online?id=technical-articles#Creating_a_Consistent_User_Experience
|
||||||
Thx - Hardy
|
Thx - Hardy
|
||||||
-->
|
-->
|
||||||
|
<string name="osm_live_plan_pricing">Plan & Pricing</string>
|
||||||
<string name="osm_live_payment_monthly_title">Pay monthly</string>
|
<string name="osm_live_payment_monthly_title">Pay monthly</string>
|
||||||
<string name="osm_live_payment_3_months_title">Pay once in 3 months</string>
|
<string name="osm_live_payment_3_months_title">Pay once in 3 months</string>
|
||||||
<string name="osm_live_payment_annual_title">Pay once a year</string>
|
<string name="osm_live_payment_annual_title">Pay once a year</string>
|
||||||
|
|
|
@ -43,6 +43,7 @@ import net.osmand.plus.download.DownloadValidationManager;
|
||||||
import net.osmand.plus.inapp.InAppPurchaseHelper;
|
import net.osmand.plus.inapp.InAppPurchaseHelper;
|
||||||
import net.osmand.plus.inapp.InAppPurchaseHelper.InAppPurchaseListener;
|
import net.osmand.plus.inapp.InAppPurchaseHelper.InAppPurchaseListener;
|
||||||
import net.osmand.plus.inapp.InAppPurchaseHelper.InAppPurchaseTaskType;
|
import net.osmand.plus.inapp.InAppPurchaseHelper.InAppPurchaseTaskType;
|
||||||
|
import net.osmand.plus.inapp.InAppPurchases.InAppPurchase;
|
||||||
import net.osmand.plus.inapp.InAppPurchases.InAppSubscription;
|
import net.osmand.plus.inapp.InAppPurchases.InAppSubscription;
|
||||||
import net.osmand.plus.liveupdates.SubscriptionFragment;
|
import net.osmand.plus.liveupdates.SubscriptionFragment;
|
||||||
import net.osmand.plus.srtmplugin.SRTMPlugin;
|
import net.osmand.plus.srtmplugin.SRTMPlugin;
|
||||||
|
@ -51,6 +52,8 @@ import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public abstract class ChoosePlanDialogFragment extends BaseOsmAndDialogFragment implements InAppPurchaseListener {
|
public abstract class ChoosePlanDialogFragment extends BaseOsmAndDialogFragment implements InAppPurchaseListener {
|
||||||
public static final String TAG = ChoosePlanDialogFragment.class.getSimpleName();
|
public static final String TAG = ChoosePlanDialogFragment.class.getSimpleName();
|
||||||
private static final Log LOG = PlatformUtil.getLog(ChoosePlanDialogFragment.class);
|
private static final Log LOG = PlatformUtil.getLog(ChoosePlanDialogFragment.class);
|
||||||
|
@ -63,6 +66,7 @@ public abstract class ChoosePlanDialogFragment extends BaseOsmAndDialogFragment
|
||||||
private ViewGroup osmLiveCardButtonsContainer;
|
private ViewGroup osmLiveCardButtonsContainer;
|
||||||
private ProgressBar osmLiveCardProgress;
|
private ProgressBar osmLiveCardProgress;
|
||||||
private View planTypeCardButton;
|
private View planTypeCardButton;
|
||||||
|
private View planTypeCardButtonDisabled;
|
||||||
|
|
||||||
public interface ChoosePlanDialogListener {
|
public interface ChoosePlanDialogListener {
|
||||||
void onChoosePlanDialogDismiss();
|
void onChoosePlanDialogDismiss();
|
||||||
|
@ -253,12 +257,25 @@ public abstract class ChoosePlanDialogFragment extends BaseOsmAndDialogFragment
|
||||||
|
|
||||||
public abstract String getPlanTypeHeaderDescription();
|
public abstract String getPlanTypeHeaderDescription();
|
||||||
|
|
||||||
public abstract String getPlanTypeButtonTitle();
|
public String getPlanTypeButtonTitle() {
|
||||||
|
InAppPurchase purchase = getPlanTypePurchase();
|
||||||
|
if (purchase != null) {
|
||||||
|
if (purchase.isPurchased()) {
|
||||||
|
return purchase.getPrice(getContext());
|
||||||
|
} else {
|
||||||
|
return getString(R.string.purchase_unlim_title, purchase.getPrice(getContext()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
public abstract String getPlanTypeButtonDescription();
|
public abstract String getPlanTypeButtonDescription();
|
||||||
|
|
||||||
public abstract void setPlanTypeButtonClickListener(View button);
|
public abstract void setPlanTypeButtonClickListener(View button);
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public abstract InAppPurchase getPlanTypePurchase();
|
||||||
|
|
||||||
private View inflate(@LayoutRes int layoutId, @Nullable ViewGroup container) {
|
private View inflate(@LayoutRes int layoutId, @Nullable ViewGroup container) {
|
||||||
int themeRes = nightMode ? R.style.OsmandDarkTheme_DarkActionbar : R.style.OsmandLightTheme_DarkActionbar_LightStatusBar;
|
int themeRes = nightMode ? R.style.OsmandDarkTheme_DarkActionbar : R.style.OsmandLightTheme_DarkActionbar_LightStatusBar;
|
||||||
return LayoutInflater.from(new ContextThemeWrapper(getContext(), themeRes))
|
return LayoutInflater.from(new ContextThemeWrapper(getContext(), themeRes))
|
||||||
|
@ -326,7 +343,15 @@ public abstract class ChoosePlanDialogFragment extends BaseOsmAndDialogFragment
|
||||||
View lastBtn = null;
|
View lastBtn = null;
|
||||||
InAppSubscription monthlyLiveUpdates = purchaseHelper.getMonthlyLiveUpdates();
|
InAppSubscription monthlyLiveUpdates = purchaseHelper.getMonthlyLiveUpdates();
|
||||||
double regularMonthlyPrice = monthlyLiveUpdates.getPriceValue();
|
double regularMonthlyPrice = monthlyLiveUpdates.getPriceValue();
|
||||||
for (final InAppSubscription s : purchaseHelper.getLiveUpdates().getVisibleSubscriptions()) {
|
List<InAppSubscription> visibleSubscriptions = purchaseHelper.getLiveUpdates().getVisibleSubscriptions();
|
||||||
|
boolean anyPurchased = false;
|
||||||
|
for (final InAppSubscription s : visibleSubscriptions) {
|
||||||
|
if (s.isPurchased()) {
|
||||||
|
anyPurchased = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (final InAppSubscription s : visibleSubscriptions) {
|
||||||
if (s.isPurchased()) {
|
if (s.isPurchased()) {
|
||||||
View buttonPurchased = inflate(R.layout.purchase_dialog_card_button_active_ex, osmLiveCardButtonsContainer);
|
View buttonPurchased = inflate(R.layout.purchase_dialog_card_button_active_ex, osmLiveCardButtonsContainer);
|
||||||
View buttonContainer = buttonPurchased.findViewById(R.id.button_container);
|
View buttonContainer = buttonPurchased.findViewById(R.id.button_container);
|
||||||
|
@ -402,13 +427,22 @@ public abstract class ChoosePlanDialogFragment extends BaseOsmAndDialogFragment
|
||||||
View button = inflate(R.layout.purchase_dialog_card_button_ex, osmLiveCardButtonsContainer);
|
View button = inflate(R.layout.purchase_dialog_card_button_ex, osmLiveCardButtonsContainer);
|
||||||
TextViewEx title = (TextViewEx) button.findViewById(R.id.title);
|
TextViewEx title = (TextViewEx) button.findViewById(R.id.title);
|
||||||
TextViewEx description = (TextViewEx) button.findViewById(R.id.description);
|
TextViewEx description = (TextViewEx) button.findViewById(R.id.description);
|
||||||
|
|
||||||
|
View buttonView = button.findViewById(R.id.button_view);
|
||||||
|
View buttonExView = button.findViewById(R.id.button_ex_view);
|
||||||
TextViewEx buttonTitle = (TextViewEx) button.findViewById(R.id.button_title);
|
TextViewEx buttonTitle = (TextViewEx) button.findViewById(R.id.button_title);
|
||||||
|
TextViewEx buttonExTitle = (TextViewEx) button.findViewById(R.id.button_ex_title);
|
||||||
|
buttonView.setVisibility(anyPurchased ? View.VISIBLE : View.GONE);
|
||||||
|
buttonExView.setVisibility(!anyPurchased ? View.VISIBLE : View.GONE);
|
||||||
|
|
||||||
TextViewEx discountRegular = (TextViewEx) button.findViewById(R.id.discount_banner_regular);
|
TextViewEx discountRegular = (TextViewEx) button.findViewById(R.id.discount_banner_regular);
|
||||||
TextViewEx discountActive = (TextViewEx) button.findViewById(R.id.discount_banner_active);
|
TextViewEx discountActive = (TextViewEx) button.findViewById(R.id.discount_banner_active);
|
||||||
View div = button.findViewById(R.id.div);
|
View div = button.findViewById(R.id.div);
|
||||||
|
|
||||||
title.setText(s.getTitle(ctx));
|
title.setText(s.getTitle(ctx));
|
||||||
description.setText(s.getDescription(ctx));
|
description.setText(s.getDescription(ctx));
|
||||||
buttonTitle.setText(s.getPrice(ctx));
|
buttonTitle.setText(s.getPrice(ctx));
|
||||||
|
buttonExTitle.setText(s.getPrice(ctx));
|
||||||
|
|
||||||
if (regularMonthlyPrice > 0 && s.getMonthlyPriceValue() > 0 && s.getMonthlyPriceValue() < regularMonthlyPrice) {
|
if (regularMonthlyPrice > 0 && s.getMonthlyPriceValue() > 0 && s.getMonthlyPriceValue() < regularMonthlyPrice) {
|
||||||
int discount = (int) ((1 - s.getMonthlyPriceValue() / regularMonthlyPrice) * 100d);
|
int discount = (int) ((1 - s.getMonthlyPriceValue() / regularMonthlyPrice) * 100d);
|
||||||
|
@ -435,6 +469,21 @@ public abstract class ChoosePlanDialogFragment extends BaseOsmAndDialogFragment
|
||||||
subscribe(s.getSku());
|
subscribe(s.getSku());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
if (anyPurchased) {
|
||||||
|
buttonView.setOnClickListener(new OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
subscribe(s.getSku());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
buttonExView.setOnClickListener(new OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
subscribe(s.getSku());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
div.setVisibility(View.VISIBLE);
|
div.setVisibility(View.VISIBLE);
|
||||||
osmLiveCardButtonsContainer.addView(button);
|
osmLiveCardButtonsContainer.addView(button);
|
||||||
lastBtn = button;
|
lastBtn = button;
|
||||||
|
@ -538,27 +587,44 @@ public abstract class ChoosePlanDialogFragment extends BaseOsmAndDialogFragment
|
||||||
cardDescription.setText(R.string.in_app_purchase_desc_ex);
|
cardDescription.setText(R.string.in_app_purchase_desc_ex);
|
||||||
|
|
||||||
planTypeCardButton = cardView.findViewById(R.id.card_button);
|
planTypeCardButton = cardView.findViewById(R.id.card_button);
|
||||||
|
planTypeCardButtonDisabled = cardView.findViewById(R.id.card_button_disabled);
|
||||||
|
|
||||||
return cardView;
|
return cardView;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupPlanTypeCardButton(boolean progress) {
|
private void setupPlanTypeCardButtons(boolean progress) {
|
||||||
if (planTypeCardButton != null) {
|
if (planTypeCardButton != null && planTypeCardButtonDisabled != null) {
|
||||||
|
InAppPurchase purchase = getPlanTypePurchase();
|
||||||
|
boolean purchased = purchase != null && purchase.isPurchased();
|
||||||
|
|
||||||
ProgressBar progressBar = (ProgressBar) planTypeCardButton.findViewById(R.id.card_button_progress);
|
ProgressBar progressBar = (ProgressBar) planTypeCardButton.findViewById(R.id.card_button_progress);
|
||||||
TextViewEx buttonTitle = (TextViewEx) planTypeCardButton.findViewById(R.id.card_button_title);
|
TextViewEx buttonTitle = (TextViewEx) planTypeCardButton.findViewById(R.id.card_button_title);
|
||||||
TextViewEx buttonSubtitle = (TextViewEx) planTypeCardButton.findViewById(R.id.card_button_subtitle);
|
TextViewEx buttonSubtitle = (TextViewEx) planTypeCardButton.findViewById(R.id.card_button_subtitle);
|
||||||
buttonTitle.setText(getPlanTypeButtonTitle());
|
buttonTitle.setText(getPlanTypeButtonTitle());
|
||||||
buttonSubtitle.setText(getPlanTypeButtonDescription());
|
buttonSubtitle.setText(getPlanTypeButtonDescription());
|
||||||
if (progress) {
|
if (progress) {
|
||||||
|
planTypeCardButton.setVisibility(View.VISIBLE);
|
||||||
|
planTypeCardButtonDisabled.setVisibility(View.GONE);
|
||||||
buttonTitle.setVisibility(View.GONE);
|
buttonTitle.setVisibility(View.GONE);
|
||||||
buttonSubtitle.setVisibility(View.GONE);
|
buttonSubtitle.setVisibility(View.GONE);
|
||||||
progressBar.setVisibility(View.VISIBLE);
|
progressBar.setVisibility(View.VISIBLE);
|
||||||
planTypeCardButton.setOnClickListener(null);
|
planTypeCardButton.setOnClickListener(null);
|
||||||
} else {
|
} else {
|
||||||
|
if (!purchased) {
|
||||||
|
planTypeCardButton.setVisibility(View.VISIBLE);
|
||||||
|
planTypeCardButtonDisabled.setVisibility(View.GONE);
|
||||||
buttonTitle.setVisibility(View.VISIBLE);
|
buttonTitle.setVisibility(View.VISIBLE);
|
||||||
buttonSubtitle.setVisibility(View.VISIBLE);
|
buttonSubtitle.setVisibility(View.VISIBLE);
|
||||||
progressBar.setVisibility(View.GONE);
|
progressBar.setVisibility(View.GONE);
|
||||||
setPlanTypeButtonClickListener(planTypeCardButton);
|
setPlanTypeButtonClickListener(planTypeCardButton);
|
||||||
|
} else {
|
||||||
|
planTypeCardButton.setVisibility(View.GONE);
|
||||||
|
planTypeCardButtonDisabled.setVisibility(View.VISIBLE);
|
||||||
|
buttonTitle = (TextViewEx) planTypeCardButtonDisabled.findViewById(R.id.card_button_title);
|
||||||
|
buttonSubtitle = (TextViewEx) planTypeCardButtonDisabled.findViewById(R.id.card_button_subtitle);
|
||||||
|
buttonTitle.setText(getPlanTypeButtonTitle());
|
||||||
|
buttonSubtitle.setText(getPlanTypeButtonDescription());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -586,7 +652,7 @@ public abstract class ChoosePlanDialogFragment extends BaseOsmAndDialogFragment
|
||||||
setupOsmLiveCardButtons(requestingInventory);
|
setupOsmLiveCardButtons(requestingInventory);
|
||||||
}
|
}
|
||||||
if (planTypeCardButton != null) {
|
if (planTypeCardButton != null) {
|
||||||
setupPlanTypeCardButton(requestingInventory);
|
setupPlanTypeCardButtons(requestingInventory);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -604,7 +670,7 @@ public abstract class ChoosePlanDialogFragment extends BaseOsmAndDialogFragment
|
||||||
public void onError(InAppPurchaseTaskType taskType, String error) {
|
public void onError(InAppPurchaseTaskType taskType, String error) {
|
||||||
if (taskType == InAppPurchaseTaskType.REQUEST_INVENTORY) {
|
if (taskType == InAppPurchaseTaskType.REQUEST_INVENTORY) {
|
||||||
setupOsmLiveCardButtons(false);
|
setupOsmLiveCardButtons(false);
|
||||||
setupPlanTypeCardButton(false);
|
setupPlanTypeCardButtons(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -627,7 +693,7 @@ public abstract class ChoosePlanDialogFragment extends BaseOsmAndDialogFragment
|
||||||
public void showProgress(InAppPurchaseTaskType taskType) {
|
public void showProgress(InAppPurchaseTaskType taskType) {
|
||||||
if (taskType == InAppPurchaseTaskType.REQUEST_INVENTORY) {
|
if (taskType == InAppPurchaseTaskType.REQUEST_INVENTORY) {
|
||||||
setupOsmLiveCardButtons(true);
|
setupOsmLiveCardButtons(true);
|
||||||
setupPlanTypeCardButton(true);
|
setupPlanTypeCardButtons(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -635,7 +701,7 @@ public abstract class ChoosePlanDialogFragment extends BaseOsmAndDialogFragment
|
||||||
public void dismissProgress(InAppPurchaseTaskType taskType) {
|
public void dismissProgress(InAppPurchaseTaskType taskType) {
|
||||||
if (taskType == InAppPurchaseTaskType.REQUEST_INVENTORY) {
|
if (taskType == InAppPurchaseTaskType.REQUEST_INVENTORY) {
|
||||||
setupOsmLiveCardButtons(false);
|
setupOsmLiveCardButtons(false);
|
||||||
setupPlanTypeCardButton(false);
|
setupPlanTypeCardButtons(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
package net.osmand.plus.chooseplan;
|
package net.osmand.plus.chooseplan;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.OsmandInAppPurchaseActivity;
|
import net.osmand.plus.activities.OsmandInAppPurchaseActivity;
|
||||||
import net.osmand.plus.inapp.InAppPurchaseHelper;
|
import net.osmand.plus.inapp.InAppPurchaseHelper;
|
||||||
|
import net.osmand.plus.inapp.InAppPurchases.InAppPurchase;
|
||||||
|
|
||||||
public class ChoosePlanFreeBannerDialogFragment extends ChoosePlanDialogFragment {
|
public class ChoosePlanFreeBannerDialogFragment extends ChoosePlanDialogFragment {
|
||||||
public static final String TAG = ChoosePlanFreeBannerDialogFragment.class.getSimpleName();
|
public static final String TAG = ChoosePlanFreeBannerDialogFragment.class.getSimpleName();
|
||||||
|
@ -72,12 +74,6 @@ public class ChoosePlanFreeBannerDialogFragment extends ChoosePlanDialogFragment
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getPlanTypeButtonTitle() {
|
|
||||||
InAppPurchaseHelper purchaseHelper = getOsmandApplication().getInAppPurchaseHelper();
|
|
||||||
return getString(R.string.purchase_unlim_title, purchaseHelper.getFullVersion().getPrice(getContext()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getPlanTypeButtonDescription() {
|
public String getPlanTypeButtonDescription() {
|
||||||
return getString(R.string.in_app_purchase_desc);
|
return getString(R.string.in_app_purchase_desc);
|
||||||
|
@ -102,4 +98,14 @@ public class ChoosePlanFreeBannerDialogFragment extends ChoosePlanDialogFragment
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public InAppPurchase getPlanTypePurchase() {
|
||||||
|
InAppPurchaseHelper purchaseHelper = getOsmandApplication().getInAppPurchaseHelper();
|
||||||
|
if (purchaseHelper != null) {
|
||||||
|
return purchaseHelper.getFullVersion();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
package net.osmand.plus.chooseplan;
|
package net.osmand.plus.chooseplan;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.OsmandInAppPurchaseActivity;
|
import net.osmand.plus.activities.OsmandInAppPurchaseActivity;
|
||||||
import net.osmand.plus.inapp.InAppPurchaseHelper;
|
import net.osmand.plus.inapp.InAppPurchaseHelper;
|
||||||
|
import net.osmand.plus.inapp.InAppPurchases.InAppPurchase;
|
||||||
|
|
||||||
public class ChoosePlanHillshadeSrtmDialogFragment extends ChoosePlanDialogFragment {
|
public class ChoosePlanHillshadeSrtmDialogFragment extends ChoosePlanDialogFragment {
|
||||||
public static final String TAG = ChoosePlanHillshadeSrtmDialogFragment.class.getSimpleName();
|
public static final String TAG = ChoosePlanHillshadeSrtmDialogFragment.class.getSimpleName();
|
||||||
|
@ -64,12 +66,6 @@ public class ChoosePlanHillshadeSrtmDialogFragment extends ChoosePlanDialogFragm
|
||||||
return getString(R.string.paid_plugin);
|
return getString(R.string.paid_plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getPlanTypeButtonTitle() {
|
|
||||||
InAppPurchaseHelper purchaseHelper = getOsmandApplication().getInAppPurchaseHelper();
|
|
||||||
return getString(R.string.purchase_unlim_title, purchaseHelper.getContourLines().getPrice(getContext()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getPlanTypeButtonDescription() {
|
public String getPlanTypeButtonDescription() {
|
||||||
return getString(R.string.in_app_purchase_desc);
|
return getString(R.string.in_app_purchase_desc);
|
||||||
|
@ -88,4 +84,14 @@ public class ChoosePlanHillshadeSrtmDialogFragment extends ChoosePlanDialogFragm
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public InAppPurchase getPlanTypePurchase() {
|
||||||
|
InAppPurchaseHelper purchaseHelper = getOsmandApplication().getInAppPurchaseHelper();
|
||||||
|
if (purchaseHelper != null) {
|
||||||
|
return purchaseHelper.getContourLines();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
package net.osmand.plus.chooseplan;
|
package net.osmand.plus.chooseplan;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.OsmandInAppPurchaseActivity;
|
import net.osmand.plus.activities.OsmandInAppPurchaseActivity;
|
||||||
import net.osmand.plus.inapp.InAppPurchaseHelper;
|
import net.osmand.plus.inapp.InAppPurchaseHelper;
|
||||||
|
import net.osmand.plus.inapp.InAppPurchases.InAppPurchase;
|
||||||
|
|
||||||
public class ChoosePlanSeaDepthMapsDialogFragment extends ChoosePlanDialogFragment {
|
public class ChoosePlanSeaDepthMapsDialogFragment extends ChoosePlanDialogFragment {
|
||||||
public static final String TAG = ChoosePlanSeaDepthMapsDialogFragment.class.getSimpleName();
|
public static final String TAG = ChoosePlanSeaDepthMapsDialogFragment.class.getSimpleName();
|
||||||
|
@ -64,12 +66,6 @@ public class ChoosePlanSeaDepthMapsDialogFragment extends ChoosePlanDialogFragme
|
||||||
return getString(R.string.in_app_purchase);
|
return getString(R.string.in_app_purchase);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getPlanTypeButtonTitle() {
|
|
||||||
InAppPurchaseHelper purchaseHelper = getOsmandApplication().getInAppPurchaseHelper();
|
|
||||||
return getString(R.string.purchase_unlim_title, purchaseHelper.getDepthContours().getPrice(getContext()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getPlanTypeButtonDescription() {
|
public String getPlanTypeButtonDescription() {
|
||||||
return getString(R.string.in_app_purchase_desc);
|
return getString(R.string.in_app_purchase_desc);
|
||||||
|
@ -87,4 +83,14 @@ public class ChoosePlanSeaDepthMapsDialogFragment extends ChoosePlanDialogFragme
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public InAppPurchase getPlanTypePurchase() {
|
||||||
|
InAppPurchaseHelper purchaseHelper = getOsmandApplication().getInAppPurchaseHelper();
|
||||||
|
if (purchaseHelper != null) {
|
||||||
|
return purchaseHelper.getDepthContours();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -194,46 +194,29 @@ public class OsmLiveCancelledDialog extends BaseOsmAndDialogFragment implements
|
||||||
ProgressBar progressBar = (ProgressBar) osmLiveButton.findViewById(R.id.card_button_progress);
|
ProgressBar progressBar = (ProgressBar) osmLiveButton.findViewById(R.id.card_button_progress);
|
||||||
TextViewEx buttonTitle = (TextViewEx) osmLiveButton.findViewById(R.id.card_button_title);
|
TextViewEx buttonTitle = (TextViewEx) osmLiveButton.findViewById(R.id.card_button_title);
|
||||||
TextViewEx buttonSubtitle = (TextViewEx) osmLiveButton.findViewById(R.id.card_button_subtitle);
|
TextViewEx buttonSubtitle = (TextViewEx) osmLiveButton.findViewById(R.id.card_button_subtitle);
|
||||||
/*
|
buttonTitle.setText(getString(R.string.osm_live_plan_pricing));
|
||||||
if (!purchaseHelper.hasPrices()) {
|
buttonSubtitle.setVisibility(View.GONE);
|
||||||
buttonTitle.setText(getString(R.string.purchase_subscription_title, getString(R.string.osm_live_default_price)));
|
|
||||||
} else {
|
|
||||||
buttonTitle.setText(getString(R.string.purchase_subscription_title, purchaseHelper.getLiveUpdatesPrice()));
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
buttonSubtitle.setText(R.string.osm_live_month_cost_desc);
|
|
||||||
if (progress) {
|
if (progress) {
|
||||||
buttonTitle.setVisibility(View.GONE);
|
buttonTitle.setVisibility(View.GONE);
|
||||||
buttonSubtitle.setVisibility(View.GONE);
|
|
||||||
progressBar.setVisibility(View.VISIBLE);
|
progressBar.setVisibility(View.VISIBLE);
|
||||||
osmLiveButton.setOnClickListener(null);
|
osmLiveButton.setOnClickListener(null);
|
||||||
} else {
|
} else {
|
||||||
buttonTitle.setVisibility(View.VISIBLE);
|
buttonTitle.setVisibility(View.VISIBLE);
|
||||||
buttonSubtitle.setVisibility(View.VISIBLE);
|
|
||||||
progressBar.setVisibility(View.GONE);
|
progressBar.setVisibility(View.GONE);
|
||||||
osmLiveButton.setOnClickListener(new View.OnClickListener() {
|
osmLiveButton.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
subscript();
|
|
||||||
dismiss();
|
dismiss();
|
||||||
|
FragmentActivity activity = getActivity();
|
||||||
|
if (activity != null) {
|
||||||
|
ChoosePlanDialogFragment.showOsmLiveInstance(activity.getSupportFragmentManager());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void subscript() {
|
|
||||||
FragmentActivity ctx = getActivity();
|
|
||||||
if (ctx != null && purchaseHelper != null) {
|
|
||||||
OsmandSettings settings = app.getSettings();
|
|
||||||
purchaseHelper.purchaseLiveUpdates(ctx, "",
|
|
||||||
settings.BILLING_USER_EMAIL.get(),
|
|
||||||
settings.BILLING_USER_NAME.get(),
|
|
||||||
settings.BILLING_USER_COUNTRY_DOWNLOAD_NAME.get(),
|
|
||||||
settings.BILLING_HIDE_USER_NAME.get());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean shouldShowDialog(OsmandApplication app) {
|
public static boolean shouldShowDialog(OsmandApplication app) {
|
||||||
OsmandSettings settings = app.getSettings();
|
OsmandSettings settings = app.getSettings();
|
||||||
long cancelledTime = settings.LIVE_UPDATES_PURCHASE_CANCELLED_TIME.get();
|
long cancelledTime = settings.LIVE_UPDATES_PURCHASE_CANCELLED_TIME.get();
|
||||||
|
|
Loading…
Reference in a new issue