Small refactoring

This commit is contained in:
Victor Shcherb 2016-08-19 14:37:19 +03:00
parent ddbabe563b
commit 67bfa8381a
2 changed files with 118 additions and 104 deletions

View file

@ -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>

View file

@ -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
@ -340,119 +338,60 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
|| 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;
}
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(); 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()));
@ -568,21 +498,106 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
} }
} }
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() {