Small refactoring
This commit is contained in:
parent
ddbabe563b
commit
67bfa8381a
2 changed files with 118 additions and 104 deletions
|
@ -11,8 +11,7 @@
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- Not translatable -->
|
<!-- Not translatable -->
|
||||||
<string name="full_version_price">€5</string>
|
<string name="full_version_price">€5,99</string>
|
||||||
<string name="osm_live_price">€1.5</string>
|
|
||||||
<string name="osm_live">OSM Live (Beta)</string>
|
<string name="osm_live">OSM Live (Beta)</string>
|
||||||
<string name="ga_api_key">UA-28342846-2</string>
|
<string name="ga_api_key">UA-28342846-2</string>
|
||||||
<string name="ga_dispatchPeriod">10</string>
|
<string name="ga_dispatchPeriod">10</string>
|
||||||
|
|
|
@ -269,13 +269,11 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
|
||||||
@Override
|
@Override
|
||||||
public void onError(String error) {
|
public void onError(String error) {
|
||||||
visibleBanner.setUpdatingPrices(false);
|
visibleBanner.setUpdatingPrices(false);
|
||||||
visibleBanner.updateFreeVersionBanner();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onGetItems() {
|
public void onGetItems() {
|
||||||
visibleBanner.setUpdatingPrices(false);
|
visibleBanner.setUpdatingPrices(false);
|
||||||
visibleBanner.updateFreeVersionBanner();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -339,120 +337,61 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
|
||||||
return (Version.isFreeVersion(application) && !application.getSettings().LIVE_UPDATES_PURCHASED.get())
|
return (Version.isFreeVersion(application) && !application.getSettings().LIVE_UPDATES_PURCHASED.get())
|
||||||
|| application.getSettings().SHOULD_SHOW_FREE_VERSION_BANNER.get();
|
|| application.getSettings().SHOULD_SHOW_FREE_VERSION_BANNER.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class BannerAndDownloadFreeVersion {
|
|
||||||
|
public static class FreeVersionDialog {
|
||||||
private final View freeVersionBanner;
|
private final View freeVersionBanner;
|
||||||
private final View downloadProgressLayout;
|
private final View freeVersionBannerTitle;
|
||||||
private final ProgressBar progressBar;
|
private boolean updatingPrices;
|
||||||
private final TextView leftTextView;
|
|
||||||
private final TextView rightTextView;
|
|
||||||
private final ProgressBar downloadsLeftProgressBar;
|
|
||||||
private final View buttonsLinearLayout;
|
|
||||||
private final View priceInfoLayout;
|
private final View priceInfoLayout;
|
||||||
private final TextView freeVersionDescriptionTextView;
|
private final TextView freeVersionDescriptionTextView;
|
||||||
private final TextView downloadsLeftTextView;
|
private final TextView downloadsLeftTextView;
|
||||||
|
private final ProgressBar downloadsLeftProgressBar;
|
||||||
private final View laterButton;
|
private final View laterButton;
|
||||||
|
|
||||||
|
private final View buttonsLinearLayout;
|
||||||
|
|
||||||
|
|
||||||
private final View fullVersionProgress;
|
private final View fullVersionProgress;
|
||||||
private final AppCompatButton fullVersionButton;
|
private final AppCompatButton fullVersionButton;
|
||||||
private final View osmLiveProgress;
|
private final View osmLiveProgress;
|
||||||
private final AppCompatButton osmLiveButton;
|
private final AppCompatButton osmLiveButton;
|
||||||
|
private DownloadActivity ctx;
|
||||||
|
|
||||||
private final DownloadActivity ctx;
|
|
||||||
private final OsmandApplication application;
|
|
||||||
private final boolean shouldShowFreeVersionBanner;
|
|
||||||
private final View freeVersionBannerTitle;
|
|
||||||
private boolean showSpace;
|
|
||||||
private boolean updatingPrices;
|
|
||||||
|
|
||||||
private static boolean wasCollapsed;
|
|
||||||
private OnClickListener onCollapseListener = new OnClickListener() {
|
private OnClickListener onCollapseListener = new OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
if (freeVersionDescriptionTextView.getVisibility() == View.VISIBLE
|
if (freeVersionDescriptionTextView.getVisibility() == View.VISIBLE
|
||||||
&& isDownlodingPermitted(application.getSettings())) {
|
&& isDownlodingPermitted(ctx.getMyApplication().getSettings())) {
|
||||||
collapseBanner();
|
collapseBanner();
|
||||||
wasCollapsed = true;
|
|
||||||
} else {
|
} else {
|
||||||
expandBanner();
|
expandBanner();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
public BannerAndDownloadFreeVersion(View view, final DownloadActivity ctx, boolean showSpace) {
|
public FreeVersionDialog(View view, final DownloadActivity ctx) {
|
||||||
this.ctx = ctx;
|
this.ctx = ctx;
|
||||||
this.showSpace = showSpace;
|
|
||||||
application = (OsmandApplication) ctx.getApplicationContext();
|
|
||||||
freeVersionBanner = view.findViewById(R.id.freeVersionBanner);
|
freeVersionBanner = view.findViewById(R.id.freeVersionBanner);
|
||||||
downloadProgressLayout = view.findViewById(R.id.downloadProgressLayout);
|
|
||||||
progressBar = (ProgressBar) view.findViewById(R.id.progressBar);
|
|
||||||
leftTextView = (TextView) view.findViewById(R.id.leftTextView);
|
|
||||||
rightTextView = (TextView) view.findViewById(R.id.rightTextView);
|
|
||||||
downloadsLeftTextView = (TextView) freeVersionBanner.findViewById(R.id.downloadsLeftTextView);
|
downloadsLeftTextView = (TextView) freeVersionBanner.findViewById(R.id.downloadsLeftTextView);
|
||||||
downloadsLeftProgressBar = (ProgressBar) freeVersionBanner.findViewById(R.id.downloadsLeftProgressBar);
|
downloadsLeftProgressBar = (ProgressBar) freeVersionBanner.findViewById(R.id.downloadsLeftProgressBar);
|
||||||
buttonsLinearLayout = freeVersionBanner.findViewById(R.id.buttonsLinearLayout);
|
|
||||||
priceInfoLayout = freeVersionBanner.findViewById(R.id.priceInfoLayout);
|
priceInfoLayout = freeVersionBanner.findViewById(R.id.priceInfoLayout);
|
||||||
freeVersionDescriptionTextView = (TextView) freeVersionBanner
|
freeVersionDescriptionTextView = (TextView) freeVersionBanner
|
||||||
.findViewById(R.id.freeVersionDescriptionTextView);
|
.findViewById(R.id.freeVersionDescriptionTextView);
|
||||||
laterButton = freeVersionBanner.findViewById(R.id.laterButton);
|
laterButton = freeVersionBanner.findViewById(R.id.laterButton);
|
||||||
freeVersionBannerTitle = freeVersionBanner.findViewById(R.id.freeVersionBannerTitle);
|
freeVersionBannerTitle = freeVersionBanner.findViewById(R.id.freeVersionBannerTitle);
|
||||||
|
buttonsLinearLayout = freeVersionBanner.findViewById(R.id.buttonsLinearLayout);
|
||||||
|
|
||||||
fullVersionProgress = freeVersionBanner.findViewById(R.id.fullVersionProgress);
|
fullVersionProgress = freeVersionBanner.findViewById(R.id.fullVersionProgress);
|
||||||
fullVersionButton = (AppCompatButton) freeVersionBanner.findViewById(R.id.fullVersionButton);
|
fullVersionButton = (AppCompatButton) freeVersionBanner.findViewById(R.id.fullVersionButton);
|
||||||
osmLiveProgress = freeVersionBanner.findViewById(R.id.osmLiveProgress);
|
osmLiveProgress = freeVersionBanner.findViewById(R.id.osmLiveProgress);
|
||||||
osmLiveButton = (AppCompatButton) freeVersionBanner.findViewById(R.id.osmLiveButton);
|
osmLiveButton = (AppCompatButton) freeVersionBanner.findViewById(R.id.osmLiveButton);
|
||||||
|
|
||||||
shouldShowFreeVersionBanner = shouldShowFreeVersionBanner(application);
|
|
||||||
|
|
||||||
initFreeVersionBanner();
|
|
||||||
updateBannerInProgress();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isUpdatingPrices() {
|
|
||||||
return updatingPrices;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setUpdatingPrices(boolean updatingPrices) {
|
public void setUpdatingPrices(boolean updatingPrices) {
|
||||||
this.updatingPrices = updatingPrices;
|
this.updatingPrices = updatingPrices;
|
||||||
}
|
updateFreeVersionBanner();
|
||||||
|
|
||||||
public void updateBannerInProgress() {
|
|
||||||
BasicProgressAsyncTask<?, ?, ?, ?> basicProgressAsyncTask = ctx.getDownloadThread().getCurrentRunningTask();
|
|
||||||
final boolean isFinished = basicProgressAsyncTask == null
|
|
||||||
|| basicProgressAsyncTask.getStatus() == AsyncTask.Status.FINISHED;
|
|
||||||
if (isFinished) {
|
|
||||||
downloadProgressLayout.setOnClickListener(null);
|
|
||||||
updateDescriptionTextWithSize(ctx, downloadProgressLayout);
|
|
||||||
if (ctx.getCurrentTab() == UPDATES_TAB_NUMBER || !showSpace) {
|
|
||||||
downloadProgressLayout.setVisibility(View.GONE);
|
|
||||||
} else {
|
|
||||||
downloadProgressLayout.setVisibility(View.VISIBLE);
|
|
||||||
}
|
|
||||||
updateFreeVersionBanner();
|
|
||||||
} else {
|
|
||||||
boolean indeterminate = basicProgressAsyncTask.isIndeterminate();
|
|
||||||
String message = basicProgressAsyncTask.getDescription();
|
|
||||||
int percent = basicProgressAsyncTask.getProgressPercentage();
|
|
||||||
setMinimizedFreeVersionBanner(true);
|
|
||||||
|
|
||||||
updateAvailableDownloads();
|
|
||||||
downloadProgressLayout.setVisibility(View.VISIBLE);
|
|
||||||
downloadProgressLayout.setOnClickListener(new OnClickListener() {
|
|
||||||
@Override
|
|
||||||
public void onClick(View v) {
|
|
||||||
new ActiveDownloadsDialogFragment().show(ctx.getSupportFragmentManager(), "dialog");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
progressBar.setIndeterminate(indeterminate);
|
|
||||||
if (indeterminate) {
|
|
||||||
leftTextView.setText(message);
|
|
||||||
rightTextView.setText(null);
|
|
||||||
} else {
|
|
||||||
progressBar.setProgress(percent);
|
|
||||||
// final String format = ctx.getString(R.string.downloading_number_of_files);
|
|
||||||
leftTextView.setText(message);
|
|
||||||
rightTextView.setText(percent + "%");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void collapseBanner() {
|
private void collapseBanner() {
|
||||||
|
@ -469,16 +408,9 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
|
||||||
freeVersionBannerTitle.setVisibility(View.VISIBLE);
|
freeVersionBannerTitle.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void hideDownloadProgressLayout() {
|
|
||||||
downloadProgressLayout.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void showDownloadProgressLayout() {
|
|
||||||
downloadProgressLayout.setVisibility(View.VISIBLE);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initFreeVersionBanner() {
|
private void initFreeVersionBanner() {
|
||||||
if (!shouldShowFreeVersionBanner) {
|
if (!shouldShowFreeVersionBanner(ctx.getMyApplication())) {
|
||||||
freeVersionBanner.setVisibility(View.GONE);
|
freeVersionBanner.setVisibility(View.GONE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -530,17 +462,15 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
|
||||||
}
|
}
|
||||||
|
|
||||||
updateFreeVersionBanner();
|
updateFreeVersionBanner();
|
||||||
if (wasCollapsed) {
|
collapseBanner();
|
||||||
collapseBanner();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateFreeVersionBanner() {
|
private void updateFreeVersionBanner() {
|
||||||
if (!shouldShowFreeVersionBanner) {
|
if (!shouldShowFreeVersionBanner(ctx.getMyApplication())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
setMinimizedFreeVersionBanner(false);
|
setMinimizedFreeVersionBanner(false);
|
||||||
OsmandSettings settings = application.getSettings();
|
OsmandSettings settings = ctx.getMyApplication().getSettings();
|
||||||
final Integer mapsDownloaded = settings.NUMBER_OF_FREE_DOWNLOADS.get();
|
final Integer mapsDownloaded = settings.NUMBER_OF_FREE_DOWNLOADS.get();
|
||||||
downloadsLeftProgressBar.setProgress(mapsDownloaded);
|
downloadsLeftProgressBar.setProgress(mapsDownloaded);
|
||||||
int downloadsLeft = DownloadValidationManager.MAXIMUM_AVAILABLE_FREE_DOWNLOADS - mapsDownloaded;
|
int downloadsLeft = DownloadValidationManager.MAXIMUM_AVAILABLE_FREE_DOWNLOADS - mapsDownloaded;
|
||||||
|
@ -551,7 +481,7 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
|
||||||
if (InAppHelper.hasPrices() || !updatingPrices) {
|
if (InAppHelper.hasPrices() || !updatingPrices) {
|
||||||
if (!InAppHelper.hasPrices()) {
|
if (!InAppHelper.hasPrices()) {
|
||||||
fullVersionButton.setText(ctx.getString(R.string.get_for, ctx.getString(R.string.full_version_price)));
|
fullVersionButton.setText(ctx.getString(R.string.get_for, ctx.getString(R.string.full_version_price)));
|
||||||
osmLiveButton.setText(ctx.getString(R.string.get_for_month, ctx.getString(R.string.osm_live_price)));
|
osmLiveButton.setText(ctx.getString(R.string.get_for_month, ctx.getString(R.string.osm_live_default_price)));
|
||||||
} else {
|
} else {
|
||||||
fullVersionButton.setText(ctx.getString(R.string.get_for, InAppHelper.getFullVersionPrice()));
|
fullVersionButton.setText(ctx.getString(R.string.get_for, InAppHelper.getFullVersionPrice()));
|
||||||
osmLiveButton.setText(ctx.getString(R.string.get_for_month, InAppHelper.getLiveUpdatesPrice()));
|
osmLiveButton.setText(ctx.getString(R.string.get_for_month, InAppHelper.getLiveUpdatesPrice()));
|
||||||
|
@ -567,22 +497,107 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
|
||||||
osmLiveButton.setVisibility(View.GONE);
|
osmLiveButton.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateAvailableDownloads() {
|
|
||||||
int activeTasks = ctx.getDownloadThread().getCountedDownloads();
|
|
||||||
OsmandSettings settings = application.getSettings();
|
|
||||||
final Integer mapsDownloaded = settings.NUMBER_OF_FREE_DOWNLOADS.get() + activeTasks;
|
|
||||||
downloadsLeftProgressBar.setProgress(mapsDownloaded);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setMinimizedFreeVersionBanner(boolean minimize) {
|
private void setMinimizedFreeVersionBanner(boolean minimize) {
|
||||||
if (minimize && isDownlodingPermitted(application.getSettings())) {
|
if (minimize && isDownlodingPermitted(ctx.getMyApplication().getSettings())) {
|
||||||
collapseBanner();
|
collapseBanner();
|
||||||
freeVersionBannerTitle.setVisibility(View.GONE);
|
freeVersionBannerTitle.setVisibility(View.GONE);
|
||||||
} else {
|
} else {
|
||||||
freeVersionBannerTitle.setVisibility(View.VISIBLE);
|
freeVersionBannerTitle.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private void updateAvailableDownloads() {
|
||||||
|
int activeTasks = ctx.getDownloadThread().getCountedDownloads();
|
||||||
|
OsmandSettings settings = ctx.getMyApplication().getSettings();
|
||||||
|
final Integer mapsDownloaded = settings.NUMBER_OF_FREE_DOWNLOADS.get() + activeTasks;
|
||||||
|
downloadsLeftProgressBar.setProgress(mapsDownloaded);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class BannerAndDownloadFreeVersion {
|
||||||
|
|
||||||
|
private final View downloadProgressLayout;
|
||||||
|
private final ProgressBar progressBar;
|
||||||
|
private final TextView leftTextView;
|
||||||
|
private final TextView rightTextView;
|
||||||
|
|
||||||
|
private final DownloadActivity ctx;
|
||||||
|
|
||||||
|
private boolean showSpace;
|
||||||
|
private FreeVersionDialog freeVersionDialog;
|
||||||
|
|
||||||
|
public BannerAndDownloadFreeVersion(View view, final DownloadActivity ctx, boolean showSpace) {
|
||||||
|
this.ctx = ctx;
|
||||||
|
this.showSpace = showSpace;
|
||||||
|
freeVersionDialog = new FreeVersionDialog(view, ctx);
|
||||||
|
|
||||||
|
downloadProgressLayout = view.findViewById(R.id.downloadProgressLayout);
|
||||||
|
progressBar = (ProgressBar) view.findViewById(R.id.progressBar);
|
||||||
|
leftTextView = (TextView) view.findViewById(R.id.leftTextView);
|
||||||
|
rightTextView = (TextView) view.findViewById(R.id.rightTextView);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
freeVersionDialog.initFreeVersionBanner();
|
||||||
|
updateBannerInProgress();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUpdatingPrices(boolean updatingPrices) {
|
||||||
|
freeVersionDialog.setUpdatingPrices(updatingPrices);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateBannerInProgress() {
|
||||||
|
BasicProgressAsyncTask<?, ?, ?, ?> basicProgressAsyncTask = ctx.getDownloadThread().getCurrentRunningTask();
|
||||||
|
final boolean isFinished = basicProgressAsyncTask == null
|
||||||
|
|| basicProgressAsyncTask.getStatus() == AsyncTask.Status.FINISHED;
|
||||||
|
if (isFinished) {
|
||||||
|
downloadProgressLayout.setOnClickListener(null);
|
||||||
|
updateDescriptionTextWithSize(ctx, downloadProgressLayout);
|
||||||
|
if (ctx.getCurrentTab() == UPDATES_TAB_NUMBER || !showSpace) {
|
||||||
|
downloadProgressLayout.setVisibility(View.GONE);
|
||||||
|
} else {
|
||||||
|
downloadProgressLayout.setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
|
freeVersionDialog.updateFreeVersionBanner();
|
||||||
|
} else {
|
||||||
|
boolean indeterminate = basicProgressAsyncTask.isIndeterminate();
|
||||||
|
String message = basicProgressAsyncTask.getDescription();
|
||||||
|
int percent = basicProgressAsyncTask.getProgressPercentage();
|
||||||
|
freeVersionDialog.setMinimizedFreeVersionBanner(true);
|
||||||
|
freeVersionDialog.updateAvailableDownloads();
|
||||||
|
downloadProgressLayout.setVisibility(View.VISIBLE);
|
||||||
|
downloadProgressLayout.setOnClickListener(new OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
new ActiveDownloadsDialogFragment().show(ctx.getSupportFragmentManager(), "dialog");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
progressBar.setIndeterminate(indeterminate);
|
||||||
|
if (indeterminate) {
|
||||||
|
leftTextView.setText(message);
|
||||||
|
rightTextView.setText(null);
|
||||||
|
} else {
|
||||||
|
progressBar.setProgress(percent);
|
||||||
|
// final String format = ctx.getString(R.string.downloading_number_of_files);
|
||||||
|
leftTextView.setText(message);
|
||||||
|
rightTextView.setText(percent + "%");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void hideDownloadProgressLayout() {
|
||||||
|
downloadProgressLayout.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void showDownloadProgressLayout() {
|
||||||
|
downloadProgressLayout.setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void reloadLocalIndexes() {
|
public void reloadLocalIndexes() {
|
||||||
|
|
Loading…
Reference in a new issue