From fa1d1c27c23492adfbbfc7ef54e1dbc4d899f542 Mon Sep 17 00:00:00 2001 From: Alexander Marchuk Date: Mon, 11 Apr 2016 18:56:06 +0300 Subject: [PATCH] [new downloader][android] fix: Check free space before downloading maps. --- .../jni/com/mapswithme/maps/MapManager.cpp | 15 ++++ .../maps/downloader/BottomPanel.java | 39 +++++++---- .../maps/downloader/DownloaderAdapter.java | 48 ++++++++----- .../maps/downloader/MapManager.java | 69 ++++++++++++++++++- .../maps/downloader/MigrationFragment.java | 2 +- .../maps/downloader/OnmapDownloader.java | 5 +- .../maps/routing/RoutingController.java | 11 ++- storage/storage_helpers.cpp | 17 +++-- storage/storage_helpers.hpp | 3 +- 9 files changed, 165 insertions(+), 44 deletions(-) diff --git a/android/jni/com/mapswithme/maps/MapManager.cpp b/android/jni/com/mapswithme/maps/MapManager.cpp index 824fd9e196..bdbc805764 100644 --- a/android/jni/com/mapswithme/maps/MapManager.cpp +++ b/android/jni/com/mapswithme/maps/MapManager.cpp @@ -5,6 +5,7 @@ #include "coding/internal/file_data.hpp" #include "storage/storage.hpp" +#include "storage/storage_helpers.hpp" #include "base/thread_checker.hpp" @@ -96,6 +97,20 @@ Java_com_mapswithme_maps_downloader_MapManager_nativeHasSpaceForMigration(JNIEnv return g_framework->HasSpaceForMigration(); } +// static boolean nativeHasSpaceToDownloadAmount(String root); +JNIEXPORT jboolean JNICALL +Java_com_mapswithme_maps_downloader_MapManager_nativeHasSpaceToDownloadAmount(JNIEnv * env, jclass clazz, jlong size) +{ + return IsEnoughSpaceForDownload(size); +} + +// static boolean nativeHasSpaceForDownloadCountry(long size); +JNIEXPORT jboolean JNICALL +Java_com_mapswithme_maps_downloader_MapManager_nativeHasSpaceToDownloadCountry(JNIEnv * env, jclass clazz, jstring root) +{ + return IsEnoughSpaceForDownload(jni::ToNativeString(env, root), GetStorage()); +} + // static native boolean nativeIsLegacyMode(); JNIEXPORT jboolean JNICALL Java_com_mapswithme_maps_downloader_MapManager_nativeIsLegacyMode(JNIEnv * env, jclass clazz) diff --git a/android/src/com/mapswithme/maps/downloader/BottomPanel.java b/android/src/com/mapswithme/maps/downloader/BottomPanel.java index bb2c2bd7d2..76f4b66cac 100644 --- a/android/src/com/mapswithme/maps/downloader/BottomPanel.java +++ b/android/src/com/mapswithme/maps/downloader/BottomPanel.java @@ -23,13 +23,18 @@ class BottomPanel @Override public void onClick(View v) { - MapManager.nativeDownload(mFragment.getAdapter().getCurrentParent()); - - Statistics.INSTANCE.trackEvent(Statistics.EventName.DOWNLOADER_ACTION, - Statistics.params().add(Statistics.EventParam.ACTION, "download") - .add(Statistics.EventParam.FROM, "downloader") - .add("is_auto", "false") - .add("scenario", "download_group")); + MapManager.warn3gAndDownload(mFragment.getActivity(), mFragment.getAdapter().getCurrentParent(), new Runnable() + { + @Override + public void run() + { + Statistics.INSTANCE.trackEvent(Statistics.EventName.DOWNLOADER_ACTION, + Statistics.params().add(Statistics.EventParam.ACTION, "download") + .add(Statistics.EventParam.FROM, "downloader") + .add("is_auto", "false") + .add("scenario", "download_group")); + } + }); } }; @@ -38,13 +43,21 @@ class BottomPanel @Override public void onClick(View v) { - MapManager.nativeUpdate(mFragment.getAdapter().getCurrentParent()); + final String country = mFragment.getAdapter().getCurrentParent(); + MapManager.warnOn3g(mFragment.getActivity(), country, new Runnable() + { + @Override + public void run() + { + MapManager.nativeUpdate(country); - Statistics.INSTANCE.trackEvent(Statistics.EventName.DOWNLOADER_ACTION, - Statistics.params().add(Statistics.EventParam.ACTION, "update") - .add(Statistics.EventParam.FROM, "downloader") - .add("is_auto", "false") - .add("scenario", "update_all")); + Statistics.INSTANCE.trackEvent(Statistics.EventName.DOWNLOADER_ACTION, + Statistics.params().add(Statistics.EventParam.ACTION, "update") + .add(Statistics.EventParam.FROM, "downloader") + .add("is_auto", "false") + .add("scenario", "update_all")); + } + }); } }; diff --git a/android/src/com/mapswithme/maps/downloader/DownloaderAdapter.java b/android/src/com/mapswithme/maps/downloader/DownloaderAdapter.java index 1d159a2352..f077b3545a 100644 --- a/android/src/com/mapswithme/maps/downloader/DownloaderAdapter.java +++ b/android/src/com/mapswithme/maps/downloader/DownloaderAdapter.java @@ -174,19 +174,28 @@ class DownloaderAdapter extends RecyclerView.Adapter