diff --git a/OsmAnd/res/drawable-xxhdpi/img_help_osmand_live.webp b/OsmAnd/res/drawable-xxhdpi/img_help_osmand_live.webp
new file mode 100644
index 0000000000..8ba8dfd428
Binary files /dev/null and b/OsmAnd/res/drawable-xxhdpi/img_help_osmand_live.webp differ
diff --git a/OsmAnd/res/drawable-xxhdpi/img_help_wikivoyage_show_image.webp b/OsmAnd/res/drawable-xxhdpi/img_help_wikivoyage_show_image.webp
new file mode 100644
index 0000000000..e6279a36fa
Binary files /dev/null and b/OsmAnd/res/drawable-xxhdpi/img_help_wikivoyage_show_image.webp differ
diff --git a/OsmAnd/res/layout/fragment_wikivoyage_show_images_first_time.xml b/OsmAnd/res/layout/fragment_wikivoyage_show_images_first_time.xml
index 1e194a3a08..6754e45410 100644
--- a/OsmAnd/res/layout/fragment_wikivoyage_show_images_first_time.xml
+++ b/OsmAnd/res/layout/fragment_wikivoyage_show_images_first_time.xml
@@ -7,15 +7,16 @@
android:background="?attr/bottom_menu_view_bg"
android:orientation="vertical">
-
-
-
+
-
-
-
-
diff --git a/OsmAnd/src/net/osmand/SecondSplashScreenFragment.java b/OsmAnd/src/net/osmand/SecondSplashScreenFragment.java
index 1c3d071b8d..13297f8fa8 100644
--- a/OsmAnd/src/net/osmand/SecondSplashScreenFragment.java
+++ b/OsmAnd/src/net/osmand/SecondSplashScreenFragment.java
@@ -19,6 +19,7 @@ import net.osmand.plus.R;
import net.osmand.plus.Version;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.helpers.AndroidUiHelper;
+import net.osmand.plus.inapp.InAppPurchaseHelper;
public class SecondSplashScreenFragment extends Fragment {
public static final String TAG = "SecondSplashScreenFragment";
@@ -99,15 +100,15 @@ public class SecondSplashScreenFragment extends Fragment {
logoLayoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
ImageView text = new ImageView(activity);
if (Version.isFreeVersion(app)) {
- if (settings.LIVE_UPDATES_PURCHASED.get()) {
+ if (InAppPurchaseHelper.isSubscribedToLiveUpdates(app)) {
text.setImageDrawable(getResources().getDrawable(R.drawable.image_text_osmand_osmlive));
- } else if (settings.FULL_VERSION_PURCHASED.get()) {
+ } else if (InAppPurchaseHelper.isFullVersionPurchased(app)) {
text.setImageDrawable(getResources().getDrawable(R.drawable.image_text_osmand_inapp));
} else {
text.setImageDrawable(getResources().getDrawable(R.drawable.image_text_osmand));
}
} else if (Version.isPaidVersion(app) || Version.isDeveloperVersion(app)) {
- if (settings.LIVE_UPDATES_PURCHASED.get()) {
+ if (InAppPurchaseHelper.isSubscribedToLiveUpdates(app)) {
text.setImageDrawable(getResources().getDrawable(R.drawable.image_text_osmand_plus_osmlive));
} else {
text.setImageDrawable(getResources().getDrawable(R.drawable.image_text_osmand_plus));
diff --git a/OsmAnd/src/net/osmand/plus/OsmandApplication.java b/OsmAnd/src/net/osmand/plus/OsmandApplication.java
index 8bc16880ee..5d83d282fa 100644
--- a/OsmAnd/src/net/osmand/plus/OsmandApplication.java
+++ b/OsmAnd/src/net/osmand/plus/OsmandApplication.java
@@ -878,8 +878,8 @@ public class OsmandApplication extends MultiDexApplication {
try {
if (Version.isGooglePlayEnabled(this) && Version.isFreeVersion(this)
&& !osmandSettings.DO_NOT_SEND_ANONYMOUS_APP_USAGE.get()
- && !osmandSettings.FULL_VERSION_PURCHASED.get()
- && !osmandSettings.LIVE_UPDATES_PURCHASED.get()) {
+ && !InAppPurchaseHelper.isFullVersionPurchased(this)
+ && !InAppPurchaseHelper.isSubscribedToLiveUpdates(this)) {
Class> cl = Class.forName("com.google.firebase.analytics.FirebaseAnalytics");
Method mm = cl.getMethod("getInstance", Context.class);
Object inst = mm.invoke(null, ctx == null ? this : ctx);
diff --git a/OsmAnd/src/net/osmand/plus/OsmandSettings.java b/OsmAnd/src/net/osmand/plus/OsmandSettings.java
index 38aef91443..fbe4f3e981 100644
--- a/OsmAnd/src/net/osmand/plus/OsmandSettings.java
+++ b/OsmAnd/src/net/osmand/plus/OsmandSettings.java
@@ -965,6 +965,9 @@ public class OsmandSettings {
public final OsmandPreference BILLING_HIDE_USER_NAME = new BooleanPreference("billing_hide_user_name", false).makeGlobal();
public final OsmandPreference BILLING_PURCHASE_TOKEN_SENT = new BooleanPreference("billing_purchase_token_sent", false).makeGlobal();
public final OsmandPreference LIVE_UPDATES_PURCHASED = new BooleanPreference("billing_live_updates_purchased", false).makeGlobal();
+ public final OsmandPreference LIVE_UPDATES_PURCHASE_CANCELLED_TIME = new LongPreference("live_updates_purchase_cancelled_time", 0).makeGlobal();
+ public final OsmandPreference LIVE_UPDATES_PURCHASE_CANCELLED_FIRST_DLG_SHOWN = new BooleanPreference("live_updates_purchase_cancelled_first_dlg_shown", false).makeGlobal();
+ public final OsmandPreference LIVE_UPDATES_PURCHASE_CANCELLED_SECOND_DLG_SHOWN = new BooleanPreference("live_updates_purchase_cancelled_second_dlg_shown", false).makeGlobal();
public final OsmandPreference FULL_VERSION_PURCHASED = new BooleanPreference("billing_full_version_purchased", false).makeGlobal();
public final OsmandPreference DEPTH_CONTOURS_PURCHASED = new BooleanPreference("billing_sea_depth_purchased", false).makeGlobal();
public final OsmandPreference EMAIL_SUBSCRIBED = new BooleanPreference("email_subscribed", false).makeGlobal();
@@ -974,8 +977,6 @@ public class OsmandSettings {
public final OsmandPreference DISCOUNT_TOTAL_SHOW = new IntPreference("discount_total_show", 0).makeGlobal();
public final OsmandPreference DISCOUNT_SHOW_DATETIME_MS = new LongPreference("show_discount_datetime_ms", 0).makeGlobal();
- public final OsmandPreference TRAVEL_ARTICLES_PURCHASED = new BooleanPreference("travel_articles_purchased", false).makeGlobal();
-
// this value string is synchronized with settings_pref.xml preference name
public final OsmandPreference USER_OSM_BUG_NAME =
new StringPreference("user_osm_bug_name", "NoName/OsmAnd").makeGlobal();
diff --git a/OsmAnd/src/net/osmand/plus/Version.java b/OsmAnd/src/net/osmand/plus/Version.java
index 42e0fe0cb6..d283ea556f 100644
--- a/OsmAnd/src/net/osmand/plus/Version.java
+++ b/OsmAnd/src/net/osmand/plus/Version.java
@@ -6,6 +6,8 @@ import java.net.URLEncoder;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
+import net.osmand.plus.inapp.InAppPurchaseHelper;
+
public class Version {
private final String appVersion;
@@ -121,14 +123,18 @@ public class Version {
public static boolean isPaidVersion(OsmandApplication ctx) {
return !isFreeVersion(ctx)
- || ctx.getSettings().FULL_VERSION_PURCHASED.get()
- || ctx.getSettings().LIVE_UPDATES_PURCHASED.get();
+ || InAppPurchaseHelper.isFullVersionPurchased(ctx)
+ || InAppPurchaseHelper.isSubscribedToLiveUpdates(ctx);
}
public static boolean isDeveloperVersion(OsmandApplication ctx){
return getAppName(ctx).contains("~") || ctx.getPackageName().equals(FREE_DEV_VERSION_NAME);
}
-
+
+ public static boolean isDeveloperBuild(OsmandApplication ctx){
+ return getAppName(ctx).contains("~");
+ }
+
public static String getVersionForTracker(OsmandApplication ctx) {
String v = Version.getAppName(ctx);
if(Version.isProductionVersion(ctx)){
diff --git a/OsmAnd/src/net/osmand/plus/activities/SettingsGeneralActivity.java b/OsmAnd/src/net/osmand/plus/activities/SettingsGeneralActivity.java
index 181799bf1a..ffc965be55 100644
--- a/OsmAnd/src/net/osmand/plus/activities/SettingsGeneralActivity.java
+++ b/OsmAnd/src/net/osmand/plus/activities/SettingsGeneralActivity.java
@@ -48,6 +48,7 @@ import net.osmand.plus.dashboard.DashChooseAppDirFragment.ChooseAppDirFragment;
import net.osmand.plus.dashboard.DashChooseAppDirFragment.MoveFilesToDifferentDirectory;
import net.osmand.plus.dialogs.ConfigureMapMenu;
import net.osmand.plus.download.DownloadActivity;
+import net.osmand.plus.inapp.InAppPurchaseHelper;
import net.osmand.plus.render.NativeOsmandLibrary;
import net.osmand.render.RenderingRulesStorage;
@@ -495,8 +496,10 @@ public class SettingsGeneralActivity extends SettingsBaseActivity implements OnR
misc.addPreference(createCheckBoxPreference(settings.DO_NOT_USE_ANIMATIONS, R.string.do_not_use_animations, R.string.do_not_use_animations_descr));
misc.addPreference(createCheckBoxPreference(settings.MAP_EMPTY_STATE_ALLOWED, R.string.tap_on_map_to_hide_interface, R.string.tap_on_map_to_hide_interface_descr));
misc.addPreference(createCheckBoxPreference(settings.DO_NOT_SHOW_STARTUP_MESSAGES, R.string.do_not_show_startup_messages, R.string.do_not_show_startup_messages_desc));
- if (Version.isGooglePlayEnabled(getMyApplication()) && Version.isFreeVersion(getMyApplication())
- && !settings.FULL_VERSION_PURCHASED.get() && !settings.LIVE_UPDATES_PURCHASED.get()) {
+ OsmandApplication app = getMyApplication();
+ if (Version.isGooglePlayEnabled(getMyApplication()) && Version.isFreeVersion(app)
+ && !InAppPurchaseHelper.isFullVersionPurchased(app)
+ && !InAppPurchaseHelper.isSubscribedToLiveUpdates(app)) {
misc.addPreference(createCheckBoxPreference(settings.DO_NOT_SEND_ANONYMOUS_APP_USAGE, R.string.do_not_send_anonymous_app_usage, R.string.do_not_send_anonymous_app_usage_desc));
}
}
diff --git a/OsmAnd/src/net/osmand/plus/chooseplan/ChoosePlanDialogFragment.java b/OsmAnd/src/net/osmand/plus/chooseplan/ChoosePlanDialogFragment.java
index fe5d013a2c..de23600cc7 100644
--- a/OsmAnd/src/net/osmand/plus/chooseplan/ChoosePlanDialogFragment.java
+++ b/OsmAnd/src/net/osmand/plus/chooseplan/ChoosePlanDialogFragment.java
@@ -3,6 +3,7 @@ package net.osmand.plus.chooseplan;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
+import android.content.DialogInterface;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
@@ -31,6 +32,7 @@ import net.osmand.PlatformUtil;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.R;
+import net.osmand.plus.Version;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.base.BaseOsmAndDialogFragment;
import net.osmand.plus.inapp.InAppPurchaseHelper;
@@ -56,7 +58,7 @@ public abstract class ChoosePlanDialogFragment extends BaseOsmAndDialogFragment
private View planTypeCardButton;
public interface ChoosePlanDialogListener {
- void onChoosePlanDialogDismissed();
+ void onChoosePlanDialogDismiss();
}
public enum OsmAndFeature {
@@ -88,11 +90,10 @@ public abstract class ChoosePlanDialogFragment extends BaseOsmAndDialogFragment
case WIKIPEDIA_OFFLINE:
case UNLOCK_ALL_FEATURES:
case DONATION_TO_OSM:
+ case WIKIVOYAGE_OFFLINE:
return false;
case SEA_DEPTH_MAPS:
- return ctx.getSettings().DEPTH_CONTOURS_PURCHASED.get();
- case WIKIVOYAGE_OFFLINE:
- return ctx.getSettings().TRAVEL_ARTICLES_PURCHASED.get();
+ return InAppPurchaseHelper.isDepthContoursPurchased(ctx);
case CONTOUR_LINES_HILLSHADE_MAPS:
return OsmandPlugin.getEnabledPlugin(SRTMPlugin.class) != null;
}
@@ -198,11 +199,11 @@ public abstract class ChoosePlanDialogFragment extends BaseOsmAndDialogFragment
}
@Override
- public void dismiss() {
- super.dismiss();
+ public void onDismiss(DialogInterface dialog) {
+ super.onDismiss(dialog);
Activity activity = getActivity();
if (activity != null && activity instanceof ChoosePlanDialogListener) {
- ((ChoosePlanDialogListener) activity).onChoosePlanDialogDismissed();
+ ((ChoosePlanDialogListener) activity).onChoosePlanDialogDismiss();
}
}
diff --git a/OsmAnd/src/net/osmand/plus/download/DownloadActivity.java b/OsmAnd/src/net/osmand/plus/download/DownloadActivity.java
index 862a8214a3..e188a8a017 100644
--- a/OsmAnd/src/net/osmand/plus/download/DownloadActivity.java
+++ b/OsmAnd/src/net/osmand/plus/download/DownloadActivity.java
@@ -58,6 +58,7 @@ import net.osmand.plus.download.ui.DownloadResourceGroupFragment;
import net.osmand.plus.download.ui.LocalIndexesFragment;
import net.osmand.plus.download.ui.UpdatesIndexFragment;
import net.osmand.plus.helpers.FileNameTranslationHelper;
+import net.osmand.plus.inapp.InAppPurchaseHelper;
import net.osmand.plus.inapp.InAppPurchaseHelper.InAppPurchaseListener;
import net.osmand.plus.inapp.InAppPurchaseHelper.InAppPurchaseTaskType;
import net.osmand.plus.openseamapsplugin.NauticalMapsPlugin;
@@ -403,8 +404,8 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
}
public static boolean shouldShowFreeVersionBanner(OsmandApplication application) {
- return (Version.isFreeVersion(application) && !application.getSettings().LIVE_UPDATES_PURCHASED.get()
- && !application.getSettings().FULL_VERSION_PURCHASED.get())
+ return (Version.isFreeVersion(application) && !InAppPurchaseHelper.isSubscribedToLiveUpdates(application)
+ && !InAppPurchaseHelper.isFullVersionPurchased(application))
|| application.getSettings().SHOULD_SHOW_FREE_VERSION_BANNER.get();
}
diff --git a/OsmAnd/src/net/osmand/plus/download/DownloadIndexesThread.java b/OsmAnd/src/net/osmand/plus/download/DownloadIndexesThread.java
index 714ccc289f..aa0eadd273 100644
--- a/OsmAnd/src/net/osmand/plus/download/DownloadIndexesThread.java
+++ b/OsmAnd/src/net/osmand/plus/download/DownloadIndexesThread.java
@@ -32,6 +32,7 @@ import net.osmand.plus.Version;
import net.osmand.plus.base.BasicProgressAsyncTask;
import net.osmand.plus.download.DownloadFileHelper.DownloadFileShowWarning;
import net.osmand.plus.helpers.DatabaseHelper;
+import net.osmand.plus.inapp.InAppPurchaseHelper;
import net.osmand.plus.resources.ResourceManager;
import net.osmand.util.Algorithms;
@@ -563,8 +564,8 @@ public class DownloadIndexesThread {
private boolean validateNotExceedsFreeLimit(IndexItem item) {
boolean exceed = Version.isFreeVersion(app)
- && !app.getSettings().LIVE_UPDATES_PURCHASED.get()
- && !app.getSettings().FULL_VERSION_PURCHASED.get()
+ && !InAppPurchaseHelper.isSubscribedToLiveUpdates(app)
+ && !InAppPurchaseHelper.isFullVersionPurchased(app)
&& DownloadActivityType.isCountedInDownloads(item)
&& downloads.get() >= DownloadValidationManager.MAXIMUM_AVAILABLE_FREE_DOWNLOADS;
if(exceed) {
diff --git a/OsmAnd/src/net/osmand/plus/download/DownloadResources.java b/OsmAnd/src/net/osmand/plus/download/DownloadResources.java
index f30e085784..e8e1f35da2 100644
--- a/OsmAnd/src/net/osmand/plus/download/DownloadResources.java
+++ b/OsmAnd/src/net/osmand/plus/download/DownloadResources.java
@@ -12,6 +12,7 @@ import net.osmand.map.OsmandRegions;
import net.osmand.map.WorldRegion;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.download.DownloadOsmandIndexesHelper.AssetIndexItem;
+import net.osmand.plus.inapp.InAppPurchaseHelper;
import net.osmand.util.MapUtils;
import org.apache.commons.logging.Log;
@@ -75,23 +76,26 @@ public class DownloadResources extends DownloadResourceGroup {
@Nullable
public IndexItem getWikivoyageItem(@NonNull String fileName) {
- String groupId = DownloadResourceGroupType.TRAVEL_GROUP.getDefaultId() + "#" +
- DownloadResourceGroupType.WIKIVOYAGE_MAPS.getDefaultId() + "#" +
- DownloadResourceGroupType.WIKIVOYAGE_HEADER.getDefaultId();
- DownloadResourceGroup wikivoyageHeader = getSubGroupById(groupId);
- if (wikivoyageHeader != null) {
- List items = wikivoyageHeader.getIndividualResources();
- if (items != null) {
- for (IndexItem ii : items) {
- if (ii.getFileName().equals(fileName)) {
- return ii;
- }
+ List items = getWikivoyageItems();
+ if (items != null) {
+ for (IndexItem ii : items) {
+ if (ii.getFileName().equals(fileName)) {
+ return ii;
}
}
}
return null;
}
+ @Nullable
+ public List getWikivoyageItems() {
+ String groupId = DownloadResourceGroupType.TRAVEL_GROUP.getDefaultId() + "#" +
+ DownloadResourceGroupType.WIKIVOYAGE_MAPS.getDefaultId() + "#" +
+ DownloadResourceGroupType.WIKIVOYAGE_HEADER.getDefaultId();
+ DownloadResourceGroup header = getSubGroupById(groupId);
+ return header == null ? null : header.getIndividualResources();
+ }
+
public IndexItem getIndexItem(String fileName) {
IndexItem res = null;
if (rawResources == null) {
@@ -321,7 +325,7 @@ public class DownloadResources extends DownloadResourceGroup {
continue;
}
if (ii.getType() == DownloadActivityType.DEPTH_CONTOUR_FILE) {
- if (app.getSettings().DEPTH_CONTOURS_PURCHASED.get() || nauticalMaps.size() == 0) {
+ if (InAppPurchaseHelper.isDepthContoursPurchased(app) || nauticalMaps.size() == 0) {
nauticalMaps.addItem(ii);
}
continue;
diff --git a/OsmAnd/src/net/osmand/plus/download/DownloadValidationManager.java b/OsmAnd/src/net/osmand/plus/download/DownloadValidationManager.java
index f1eb89235d..3a12eb3305 100644
--- a/OsmAnd/src/net/osmand/plus/download/DownloadValidationManager.java
+++ b/OsmAnd/src/net/osmand/plus/download/DownloadValidationManager.java
@@ -17,6 +17,7 @@ import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
import net.osmand.plus.Version;
import net.osmand.plus.download.DownloadIndexesThread.DownloadEvents;
+import net.osmand.plus.inapp.InAppPurchaseHelper;
import java.io.File;
import java.text.MessageFormat;
@@ -154,8 +155,8 @@ public class DownloadValidationManager {
}
protected void downloadFilesCheck_1_FreeVersion(FragmentActivity context, IndexItem[] items) {
- if (Version.isFreeVersion(getMyApplication()) && !app.getSettings().LIVE_UPDATES_PURCHASED.get()
- && !app.getSettings().FULL_VERSION_PURCHASED.get()) {
+ if (Version.isFreeVersion(getMyApplication()) && !InAppPurchaseHelper.isSubscribedToLiveUpdates(app)
+ && !InAppPurchaseHelper.isFullVersionPurchased(app)) {
int total = settings.NUMBER_OF_FREE_DOWNLOADS.get();
if (total > MAXIMUM_AVAILABLE_FREE_DOWNLOADS) {
if (context instanceof FragmentActivity) {
diff --git a/OsmAnd/src/net/osmand/plus/download/ui/ItemViewHolder.java b/OsmAnd/src/net/osmand/plus/download/ui/ItemViewHolder.java
index c1ed2b5816..fd1c08985d 100644
--- a/OsmAnd/src/net/osmand/plus/download/ui/ItemViewHolder.java
+++ b/OsmAnd/src/net/osmand/plus/download/ui/ItemViewHolder.java
@@ -32,6 +32,7 @@ import net.osmand.plus.download.DownloadResources;
import net.osmand.plus.download.IndexItem;
import net.osmand.plus.download.ui.LocalIndexesFragment.LocalIndexOperationTask;
import net.osmand.plus.helpers.FileNameTranslationHelper;
+import net.osmand.plus.inapp.InAppPurchaseHelper;
import net.osmand.util.Algorithms;
import java.io.File;
@@ -129,7 +130,7 @@ public class ItemViewHolder {
nauticalPluginDisabled = context.isNauticalPluginDisabled();
freeVersion = context.isFreeVersion();
srtmNeedsInstallation = context.isSrtmNeedsInstallation();
- depthContoursPurchased = context.getMyApplication().getSettings().DEPTH_CONTOURS_PURCHASED.get();
+ depthContoursPurchased = InAppPurchaseHelper.isDepthContoursPurchased(context.getMyApplication());
}
public void bindIndexItem(final IndexItem indexItem) {
@@ -314,10 +315,10 @@ public class ItemViewHolder {
}
} else if (indexItem.getType() == DownloadActivityType.WIKIPEDIA_FILE && freeVersion
- && !context.getMyApplication().getSettings().FULL_VERSION_PURCHASED.get()) {
+ && !InAppPurchaseHelper.isFullVersionPurchased(context.getMyApplication())) {
clickAction = RightButtonAction.ASK_FOR_FULL_VERSION_PURCHASE;
} else if (indexItem.getType() == DownloadActivityType.DEPTH_CONTOUR_FILE
- && !context.getMyApplication().getSettings().DEPTH_CONTOURS_PURCHASED.get()) {
+ && !InAppPurchaseHelper.isDepthContoursPurchased(context.getMyApplication())) {
clickAction = RightButtonAction.ASK_FOR_DEPTH_CONTOURS_PURCHASE;
}
return clickAction;
diff --git a/OsmAnd/src/net/osmand/plus/download/ui/LocalIndexesFragment.java b/OsmAnd/src/net/osmand/plus/download/ui/LocalIndexesFragment.java
index 5b17c4cb81..a09e58b937 100644
--- a/OsmAnd/src/net/osmand/plus/download/ui/LocalIndexesFragment.java
+++ b/OsmAnd/src/net/osmand/plus/download/ui/LocalIndexesFragment.java
@@ -56,6 +56,7 @@ import net.osmand.plus.download.DownloadActivity;
import net.osmand.plus.download.DownloadIndexesThread.DownloadEvents;
import net.osmand.plus.download.IndexItem;
import net.osmand.plus.helpers.FileNameTranslationHelper;
+import net.osmand.plus.inapp.InAppPurchaseHelper;
import net.osmand.plus.resources.IncrementalChangesManager;
import net.osmand.util.Algorithms;
@@ -469,7 +470,7 @@ public class LocalIndexesFragment extends OsmandExpandableListFragment implement
if (operation == DELETE_OPERATION) {
File f = new File(info.getPathToData());
successfull = Algorithms.removeAllFiles(f);
- if (getMyApplication().getSettings().LIVE_UPDATES_PURCHASED.get()) {
+ if (InAppPurchaseHelper.isSubscribedToLiveUpdates(getMyApplication())) {
String fileNameWithoutExtension =
Algorithms.getFileNameWithoutExtension(f);
IncrementalChangesManager changesManager =
diff --git a/OsmAnd/src/net/osmand/plus/download/ui/UpdatesIndexFragment.java b/OsmAnd/src/net/osmand/plus/download/ui/UpdatesIndexFragment.java
index cc77789481..0d288b29b8 100644
--- a/OsmAnd/src/net/osmand/plus/download/ui/UpdatesIndexFragment.java
+++ b/OsmAnd/src/net/osmand/plus/download/ui/UpdatesIndexFragment.java
@@ -26,6 +26,7 @@ import net.osmand.plus.download.DownloadActivity;
import net.osmand.plus.download.DownloadIndexesThread.DownloadEvents;
import net.osmand.plus.download.DownloadResources;
import net.osmand.plus.download.IndexItem;
+import net.osmand.plus.inapp.InAppPurchaseHelper;
import net.osmand.util.Algorithms;
import java.util.Comparator;
@@ -92,7 +93,7 @@ public class UpdatesIndexFragment extends OsmAndListFragment implements Download
getMyApplication().getResourceManager().getOsmandRegions();
OsmandSettings settings = getMyApplication().getSettings();
listAdapter = new UpdateIndexAdapter(a, R.layout.download_index_list_item, indexItems,
- !settings.LIVE_UPDATES_PURCHASED.get() || settings.SHOULD_SHOW_FREE_VERSION_BANNER.get());
+ !InAppPurchaseHelper.isSubscribedToLiveUpdates(getMyApplication()) || settings.SHOULD_SHOW_FREE_VERSION_BANNER.get());
listAdapter.sort(new Comparator() {
@Override
public int compare(IndexItem indexItem, IndexItem indexItem2) {
diff --git a/OsmAnd/src/net/osmand/plus/inapp/InAppPurchaseHelper.java b/OsmAnd/src/net/osmand/plus/inapp/InAppPurchaseHelper.java
index 1a74139640..c41bfc20fd 100644
--- a/OsmAnd/src/net/osmand/plus/inapp/InAppPurchaseHelper.java
+++ b/OsmAnd/src/net/osmand/plus/inapp/InAppPurchaseHelper.java
@@ -121,8 +121,16 @@ public class InAppPurchaseHelper {
return activeTask;
}
- public boolean isSubscribedToLiveUpdates() {
- return ctx.getSettings().LIVE_UPDATES_PURCHASED.get();
+ public static boolean isSubscribedToLiveUpdates(@NonNull OsmandApplication ctx) {
+ return Version.isDeveloperBuild(ctx) || ctx.getSettings().LIVE_UPDATES_PURCHASED.get();
+ }
+
+ public static boolean isFullVersionPurchased(@NonNull OsmandApplication ctx) {
+ return Version.isDeveloperBuild(ctx) || ctx.getSettings().FULL_VERSION_PURCHASED.get();
+ }
+
+ public static boolean isDepthContoursPurchased(@NonNull OsmandApplication ctx) {
+ return Version.isDeveloperBuild(ctx) || ctx.getSettings().DEPTH_CONTOURS_PURCHASED.get();
}
public String getLiveUpdatesPrice() {
@@ -176,12 +184,7 @@ public class InAppPurchaseHelper {
public InAppPurchaseHelper(OsmandApplication ctx) {
this.ctx = ctx;
- this.isDeveloperVersion = Version.isDeveloperVersion(ctx);
- if (this.isDeveloperVersion) {
- ctx.getSettings().LIVE_UPDATES_PURCHASED.set(true);
- ctx.getSettings().FULL_VERSION_PURCHASED.set(true);
- ctx.getSettings().DEPTH_CONTOURS_PURCHASED.set(true);
- }
+ isDeveloperVersion = Version.isDeveloperVersion(ctx);
initialize();
}
@@ -192,11 +195,11 @@ public class InAppPurchaseHelper {
public boolean isPurchased(String inAppSku) {
OsmandSettings settings = ctx.getSettings();
if (inAppSku.equals(SKU_FULL_VERSION_PRICE)) {
- return settings.FULL_VERSION_PURCHASED.get();
+ return isFullVersionPurchased(ctx);
} else if (inAppSku.equals(SKU_LIVE_UPDATES_FULL) || inAppSku.equals(SKU_LIVE_UPDATES_FREE)) {
- return settings.LIVE_UPDATES_PURCHASED.get();
+ return isSubscribedToLiveUpdates(ctx);
} else if (inAppSku.equals(SKU_DEPTH_CONTOURS_FULL) || inAppSku.equals(SKU_DEPTH_CONTOURS_FREE)) {
- return settings.DEPTH_CONTOURS_PURCHASED.get();
+ return isDepthContoursPurchased(ctx);
}
return false;
}
@@ -252,7 +255,7 @@ public class InAppPurchaseHelper {
}
public boolean needRequestInventory() {
- return (ctx.getSettings().LIVE_UPDATES_PURCHASED.get() && !ctx.getSettings().BILLING_PURCHASE_TOKEN_SENT.get())
+ return (isSubscribedToLiveUpdates(ctx) && !ctx.getSettings().BILLING_PURCHASE_TOKEN_SENT.get())
|| System.currentTimeMillis() - lastValidationCheckTime > PURCHASE_VALIDATION_PERIOD_MSEC;
}
@@ -355,7 +358,9 @@ public class InAppPurchaseHelper {
// Do we have the live updates?
Purchase liveUpdatesPurchase = inventory.getPurchase(SKU_LIVE_UPDATES);
boolean subscribedToLiveUpdates = (liveUpdatesPurchase != null && liveUpdatesPurchase.getPurchaseState() == 0);
- //subscribedToLiveUpdates = false;
+ if (!subscribedToLiveUpdates && ctx.getSettings().LIVE_UPDATES_PURCHASED.get()) {
+ ctx.getSettings().LIVE_UPDATES_PURCHASE_CANCELLED_TIME.set(System.currentTimeMillis());
+ }
ctx.getSettings().LIVE_UPDATES_PURCHASED.set(subscribedToLiveUpdates);
Purchase fullVersionPurchase = inventory.getPurchase(SKU_FULL_VERSION_PRICE);
diff --git a/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesFragment.java b/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesFragment.java
index 8aad43a3a1..d0f3de34e2 100644
--- a/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesFragment.java
+++ b/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesFragment.java
@@ -130,8 +130,7 @@ public class LiveUpdatesFragment extends BaseOsmAndFragment implements InAppPurc
listView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
- InAppPurchaseHelper purchaseHelper = getInAppPurchaseHelper();
- if (!processing && purchaseHelper != null && purchaseHelper.isSubscribedToLiveUpdates()) {
+ if (!processing && InAppPurchaseHelper.isSubscribedToLiveUpdates(getMyApplication())) {
final FragmentManager fragmentManager = getChildFragmentManager();
LiveUpdatesSettingsDialogFragment
.createInstance(adapter.getChild(groupPosition, childPosition).getFileName())
@@ -153,8 +152,7 @@ public class LiveUpdatesFragment extends BaseOsmAndFragment implements InAppPurc
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
- InAppPurchaseHelper purchaseHelper = getInAppPurchaseHelper();
- if (position == 0 && !processing && purchaseHelper != null && purchaseHelper.isSubscribedToLiveUpdates()) {
+ if (position == 0 && !processing && InAppPurchaseHelper.isSubscribedToLiveUpdates(getMyApplication())) {
SubscriptionFragment subscriptionFragment = new SubscriptionFragment();
subscriptionFragment.setEditMode(true);
subscriptionFragment.show(getChildFragmentManager(), SubscriptionFragment.TAG);
@@ -174,7 +172,7 @@ public class LiveUpdatesFragment extends BaseOsmAndFragment implements InAppPurc
if (getActivity() instanceof OsmLiveActivity) {
View subscriptionBanner = subscriptionHeader.findViewById(R.id.subscription_banner);
View subscriptionInfo = subscriptionHeader.findViewById(R.id.subscription_info);
- if (getSettings().LIVE_UPDATES_PURCHASED.get()) {
+ if (InAppPurchaseHelper.isSubscribedToLiveUpdates(getMyApplication())) {
ImageView statusIcon = (ImageView) subscriptionHeader.findViewById(R.id.statusIcon);
TextView statusTextView = (TextView) subscriptionHeader.findViewById(R.id.statusTextView);
TextView regionNameHeaderTextView = (TextView) subscriptionHeader.findViewById(R.id.regionHeaderTextView);
@@ -267,7 +265,9 @@ public class LiveUpdatesFragment extends BaseOsmAndFragment implements InAppPurc
@SuppressWarnings("deprecation")
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- if (getSettings().LIVE_UPDATES_PURCHASED.get() && !Version.isDeveloperVersion(getMyApplication())) {
+ if (InAppPurchaseHelper.isSubscribedToLiveUpdates(getMyApplication())
+ && !Version.isDeveloperVersion(getMyApplication())) {
+
ActionBar actionBar = getMyActivity().getSupportActionBar();
if (actionBar != null) {
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
@@ -404,8 +404,7 @@ public class LiveUpdatesFragment extends BaseOsmAndFragment implements InAppPurc
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
- InAppPurchaseHelper purchaseHelper = getInAppPurchaseHelper();
- if (purchaseHelper != null && purchaseHelper.isSubscribedToLiveUpdates()) {
+ if (InAppPurchaseHelper.isSubscribedToLiveUpdates(getMyApplication())) {
switchOnLiveUpdates(settings);
} else {
liveUpdatesSwitch.setChecked(false);
@@ -606,8 +605,7 @@ public class LiveUpdatesFragment extends BaseOsmAndFragment implements InAppPurc
descriptionTextView.setText(context.getString(R.string.last_map_change, lastCheckString));
}
- InAppPurchaseHelper purchaseHelper = fragment.getInAppPurchaseHelper();
- if (!fragment.isProcessing() && purchaseHelper != null && purchaseHelper.isSubscribedToLiveUpdates()) {
+ if (!fragment.isProcessing() && InAppPurchaseHelper.isSubscribedToLiveUpdates(context)) {
final View.OnClickListener clickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -708,8 +706,7 @@ public class LiveUpdatesFragment extends BaseOsmAndFragment implements InAppPurc
@Override
public void onGetItems() {
- InAppPurchaseHelper purchaseHelper = getInAppPurchaseHelper();
- if (purchaseHelper != null && !purchaseHelper.isSubscribedToLiveUpdates()) {
+ if (!InAppPurchaseHelper.isSubscribedToLiveUpdates(getMyApplication())) {
getSettings().IS_LIVE_UPDATES_ON.set(false);
adapter.enableLiveUpdates(false);
}
diff --git a/OsmAnd/src/net/osmand/plus/liveupdates/OsmLiveActivity.java b/OsmAnd/src/net/osmand/plus/liveupdates/OsmLiveActivity.java
index 53c7203c51..210af91384 100644
--- a/OsmAnd/src/net/osmand/plus/liveupdates/OsmLiveActivity.java
+++ b/OsmAnd/src/net/osmand/plus/liveupdates/OsmLiveActivity.java
@@ -21,6 +21,7 @@ import net.osmand.plus.chooseplan.ChoosePlanDialogFragment;
import net.osmand.plus.chooseplan.ChoosePlanDialogFragment.ChoosePlanDialogListener;
import net.osmand.plus.download.AbstractDownloadActivity;
import net.osmand.plus.download.DownloadIndexesThread.DownloadEvents;
+import net.osmand.plus.inapp.InAppPurchaseHelper;
import org.apache.commons.logging.Log;
@@ -35,12 +36,10 @@ public class OsmLiveActivity extends AbstractDownloadActivity implements Downloa
private final static Log LOG = PlatformUtil.getLog(OsmLiveActivity.class);
public final static String OPEN_SUBSCRIPTION_INTENT_PARAM = "open_subscription_intent_param";
public final static String SHOW_SETTINGS_ONLY_INTENT_PARAM = "show_settings_only_intent_param";
- public final static String CHOOSE_PLAN_DIALOG_DISMISSED_KEY = "choose_plan_dialog_dismissed_key";
private LiveUpdatesFragmentPagerAdapter pagerAdapter;
private boolean openSubscription;
private boolean showSettingOnly;
- private boolean choosePlanDialogDismissed;
private GetLastUpdateDateTask getLastUpdateDateTask;
private static final String URL = "https://osmand.net/api/osmlive_status";
@@ -57,7 +56,6 @@ public class OsmLiveActivity extends AbstractDownloadActivity implements Downloa
} else if (savedInstanceState != null) {
openSubscription = savedInstanceState.getBoolean(OPEN_SUBSCRIPTION_INTENT_PARAM, false);
showSettingOnly = savedInstanceState.getBoolean(SHOW_SETTINGS_ONLY_INTENT_PARAM, false);
- choosePlanDialogDismissed = savedInstanceState.getBoolean(CHOOSE_PLAN_DIALOG_DISMISSED_KEY, false);
}
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
@@ -89,8 +87,7 @@ public class OsmLiveActivity extends AbstractDownloadActivity implements Downloa
@Override
protected void onResume() {
super.onResume();
- if (!getMyApplication().getSettings().LIVE_UPDATES_PURCHASED.get() && showSettingOnly
- && !choosePlanDialogDismissed) {
+ if (!InAppPurchaseHelper.isSubscribedToLiveUpdates(getMyApplication()) && showSettingOnly) {
ChoosePlanDialogFragment.showOsmLiveInstance(getSupportFragmentManager());
}
}
@@ -114,12 +111,11 @@ public class OsmLiveActivity extends AbstractDownloadActivity implements Downloa
super.onSaveInstanceState(outState);
outState.putBoolean(OPEN_SUBSCRIPTION_INTENT_PARAM, openSubscription);
outState.putBoolean(SHOW_SETTINGS_ONLY_INTENT_PARAM, showSettingOnly);
- outState.putBoolean(CHOOSE_PLAN_DIALOG_DISMISSED_KEY, choosePlanDialogDismissed);
}
@Override
- public void onChoosePlanDialogDismissed() {
- choosePlanDialogDismissed = true;
+ public void onChoosePlanDialogDismiss() {
+ finish();
}
public boolean isShowSettingOnly() {
diff --git a/OsmAnd/src/net/osmand/plus/resources/ResourceManager.java b/OsmAnd/src/net/osmand/plus/resources/ResourceManager.java
index a55fbc7ae1..18709b2c71 100644
--- a/OsmAnd/src/net/osmand/plus/resources/ResourceManager.java
+++ b/OsmAnd/src/net/osmand/plus/resources/ResourceManager.java
@@ -36,6 +36,7 @@ import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.R;
import net.osmand.plus.Version;
+import net.osmand.plus.inapp.InAppPurchaseHelper;
import net.osmand.plus.render.MapRenderRepositories;
import net.osmand.plus.render.NativeOsmandLibrary;
import net.osmand.plus.resources.AsyncLoadingThread.MapLoadRequest;
@@ -581,7 +582,7 @@ public class ResourceManager {
collectFiles(appPath, IndexConstants.BINARY_MAP_INDEX_EXT, files);
renameRoadsFiles(files, roadsPath);
collectFiles(roadsPath, IndexConstants.BINARY_MAP_INDEX_EXT, files);
- if (!Version.isFreeVersion(context) || context.getSettings().FULL_VERSION_PURCHASED.get()) {
+ if (!Version.isFreeVersion(context) || InAppPurchaseHelper.isFullVersionPurchased(context)) {
collectFiles(context.getAppPath(IndexConstants.WIKI_INDEX_DIR), IndexConstants.BINARY_MAP_INDEX_EXT, files);
}
if (OsmandPlugin.getEnabledPlugin(SRTMPlugin.class) != null) {
@@ -618,7 +619,7 @@ public class ResourceManager {
}
boolean wikiMap = (f.getName().contains("_wiki") || f.getName().contains(IndexConstants.BINARY_WIKI_MAP_INDEX_EXT));
boolean srtmMap = f.getName().contains(IndexConstants.BINARY_SRTM_MAP_INDEX_EXT);
- if (mapReader == null || (Version.isFreeVersion(context) && wikiMap && !context.getSettings().FULL_VERSION_PURCHASED.get())) {
+ if (mapReader == null || (Version.isFreeVersion(context) && wikiMap && !InAppPurchaseHelper.isFullVersionPurchased(context))) {
warnings.add(MessageFormat.format(context.getString(R.string.version_index_is_not_supported), f.getName())); //$NON-NLS-1$
} else {
if (mapReader.isBasemap()) {
diff --git a/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelLocalDataHelper.java b/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelLocalDataHelper.java
index 2cad461103..deaec9edaa 100644
--- a/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelLocalDataHelper.java
+++ b/OsmAnd/src/net/osmand/plus/wikivoyage/data/TravelLocalDataHelper.java
@@ -22,7 +22,7 @@ public class TravelLocalDataHelper {
private WikivoyageLocalDataDbHelper dbHelper;
private TLongObjectHashMap historyMap;
- private List savedArticles;
+ private List savedArticles = new ArrayList<>();
private Listener listener;
@@ -114,7 +114,7 @@ public class TravelLocalDataHelper {
savedArticles.add(article);
dbHelper.addSavedArticle(article);
notifySavedUpdated();
- }
+ }
}
public void removeArticleFromSaved(@NonNull TravelArticle article) {
diff --git a/OsmAnd/src/net/osmand/plus/wikivoyage/explore/ExploreTabFragment.java b/OsmAnd/src/net/osmand/plus/wikivoyage/explore/ExploreTabFragment.java
index 3f6b7f6ded..bdd0deb293 100644
--- a/OsmAnd/src/net/osmand/plus/wikivoyage/explore/ExploreTabFragment.java
+++ b/OsmAnd/src/net/osmand/plus/wikivoyage/explore/ExploreTabFragment.java
@@ -1,5 +1,7 @@
package net.osmand.plus.wikivoyage.explore;
+import android.app.Activity;
+import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
@@ -10,7 +12,6 @@ import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.Toast;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
@@ -38,7 +39,6 @@ public class ExploreTabFragment extends BaseOsmAndFragment implements DownloadIn
private ExploreRvAdapter adapter = new ExploreRvAdapter();
- private StartEditingTravelCard startEditingTravelCard;
private TravelDownloadUpdateCard downloadUpdateCard;
private boolean nightMode;
@@ -67,7 +67,6 @@ public class ExploreTabFragment extends BaseOsmAndFragment implements DownloadIn
final List items = new ArrayList<>();
final OsmandApplication app = getMyApplication();
- startEditingTravelCard = new StartEditingTravelCard(app, nightMode);
addOpenBetaTravelCard(items, nightMode);
if (app.getTravelDbHelper().getSelectedTravelBook() != null) {
items.add(new HeaderTravelCard(app, nightMode, getString(R.string.popular_destinations)));
@@ -80,7 +79,7 @@ public class ExploreTabFragment extends BaseOsmAndFragment implements DownloadIn
}
}
}
- items.add(startEditingTravelCard);
+ items.add(new StartEditingTravelCard(app, nightMode));
adapter.setItems(items);
checkToAddDownloadTravelCard();
@@ -150,17 +149,21 @@ public class ExploreTabFragment extends BaseOsmAndFragment implements DownloadIn
boolean outdated = indexItem != null && indexItem.isOutdated();
File selectedTravelBook = app.getTravelDbHelper().getSelectedTravelBook();
if (selectedTravelBook == null || outdated) {
+ boolean showOtherMaps = false;
+ if (selectedTravelBook == null) {
+ List items = app.getDownloadThread().getIndexes().getWikivoyageItems();
+ showOtherMaps = items != null && items.size() > 1;
+ }
downloadUpdateCard = new TravelDownloadUpdateCard(app, nightMode, !outdated);
+ downloadUpdateCard.setShowOtherMapsBtn(showOtherMaps);
downloadUpdateCard.setLoadingInProgress(loadingInProgress);
downloadUpdateCard.setListener(new TravelDownloadUpdateCard.ClickListener() {
@Override
public void onPrimaryButtonClick() {
- if (app.getSettings().isInternetConnectionAvailable()) {
+ if (indexItem != null) {
new DownloadValidationManager(app).startDownload(getMyActivity(), indexItem);
downloadUpdateCard.setLoadingInProgress(true);
adapter.updateDownloadUpdateCard();
- } else {
- Toast.makeText(app, app.getString(R.string.no_index_file_to_download), Toast.LENGTH_SHORT).show();
}
}
@@ -172,6 +175,14 @@ public class ExploreTabFragment extends BaseOsmAndFragment implements DownloadIn
adapter.updateDownloadUpdateCard();
} else if (!downloadUpdateCard.isDownload()) {
removeDownloadUpdateCard();
+ } else if (downloadUpdateCard.isShowOtherMapsBtn()) {
+ Activity activity = getActivity();
+ if (activity != null) {
+ Intent newIntent = new Intent(activity,
+ getMyApplication().getAppCustomization().getDownloadActivity());
+ newIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
+ activity.startActivity(newIntent);
+ }
}
}
});
diff --git a/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelDownloadUpdateCard.java b/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelDownloadUpdateCard.java
index 584a4064b1..2f1fe46289 100644
--- a/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelDownloadUpdateCard.java
+++ b/OsmAnd/src/net/osmand/plus/wikivoyage/explore/travelcards/TravelDownloadUpdateCard.java
@@ -3,6 +3,7 @@ package net.osmand.plus.wikivoyage.explore.travelcards;
import android.graphics.drawable.Drawable;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+import android.support.annotation.StringRes;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.RecyclerView;
import android.view.View;
@@ -21,6 +22,7 @@ public class TravelDownloadUpdateCard extends BaseTravelCard {
public static final int TYPE = 50;
private boolean download;
+ private boolean showOtherMapsBtn;
private boolean loadingInProgress;
private int progress;
@@ -35,6 +37,14 @@ public class TravelDownloadUpdateCard extends BaseTravelCard {
return download;
}
+ public boolean isShowOtherMapsBtn() {
+ return showOtherMapsBtn;
+ }
+
+ public void setShowOtherMapsBtn(boolean showOtherMapsBtn) {
+ this.showOtherMapsBtn = showOtherMapsBtn;
+ }
+
public boolean isLoadingInProgress() {
return loadingInProgress;
}
@@ -97,6 +107,10 @@ public class TravelDownloadUpdateCard extends BaseTravelCard {
return app.getString(download ? R.string.download_file : R.string.update_is_available);
}
+ private boolean isInternetAvailable() {
+ return app.getSettings().isInternetConnectionAvailable();
+ }
+
private Drawable getIcon() {
int id = download ? R.drawable.travel_card_download_icon : R.drawable.travel_card_update_icon;
return ContextCompat.getDrawable(app, id);
@@ -104,6 +118,9 @@ public class TravelDownloadUpdateCard extends BaseTravelCard {
@NonNull
private String getDescription() {
+ if (!isInternetAvailable()) {
+ return app.getString(R.string.no_index_file_to_download);
+ }
return app.getString(download ? R.string.travel_card_download_descr : R.string.travel_card_update_descr);
}
@@ -131,9 +148,9 @@ public class TravelDownloadUpdateCard extends BaseTravelCard {
* @return true if button is visible, false otherwise.
*/
private boolean updateSecondaryButton(DownloadUpdateVH vh) {
- if (loadingInProgress || !download) {
+ if (loadingInProgress || !download || showOtherMapsBtn) {
vh.secondaryBtnContainer.setVisibility(View.VISIBLE);
- vh.secondaryBtn.setText(loadingInProgress ? R.string.shared_string_cancel : R.string.later);
+ vh.secondaryBtn.setText(getSecondaryBtnTextId());
vh.secondaryBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -148,12 +165,24 @@ public class TravelDownloadUpdateCard extends BaseTravelCard {
return false;
}
+ @StringRes
+ private int getSecondaryBtnTextId() {
+ if (loadingInProgress) {
+ return R.string.shared_string_cancel;
+ }
+ if (!download) {
+ return R.string.later;
+ }
+ return R.string.download_select_map_types;
+ }
+
/**
* @return true if button is visible, false otherwise.
*/
private boolean updatePrimaryButton(DownloadUpdateVH vh) {
if (!loadingInProgress) {
vh.primaryBtnContainer.setVisibility(View.VISIBLE);
+ vh.primaryButton.setEnabled(isInternetAvailable());
vh.primaryButton.setText(download ? R.string.shared_string_download : R.string.shared_string_update);
vh.primaryButton.setOnClickListener(new View.OnClickListener() {
@Override