From b72636c55383f553fb5f9d0cf3458bde2d44f46d Mon Sep 17 00:00:00 2001 From: vng Date: Mon, 25 Mar 2013 19:19:13 +0300 Subject: [PATCH] [android] Do not allow to change map storage path when downloading is active. --- android/jni/com/mapswithme/maps/Framework.cpp | 5 +++ android/jni/com/mapswithme/maps/Framework.hpp | 2 + .../maps/settings/StoragePathActivity.cpp | 6 +++ android/res/values-ru/strings.xml | 4 ++ android/res/values/strings.xml | 4 ++ .../maps/settings/SettingsActivity.java | 37 ++++++++++++++++--- storage/storage.cpp | 5 +++ storage/storage.hpp | 1 + strings.txt | 10 +++++ 9 files changed, 68 insertions(+), 6 deletions(-) diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index 0787c14523..310ec5e7b1 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -718,4 +718,9 @@ namespace android return AddBookmark(newCat, bmk).second; } + + bool Framework::IsDownloadingActive() + { + return m_work.Storage().IsDownloadInProgress(); + } } diff --git a/android/jni/com/mapswithme/maps/Framework.hpp b/android/jni/com/mapswithme/maps/Framework.hpp index 9edc5f39ff..44040fc58d 100644 --- a/android/jni/com/mapswithme/maps/Framework.hpp +++ b/android/jni/com/mapswithme/maps/Framework.hpp @@ -140,6 +140,8 @@ namespace android size_t ChangeBookmarkCategory(BookmarkAndCategory const & ind, size_t newCat); ::Framework * NativeFramework(); + + bool IsDownloadingActive(); }; } diff --git a/android/jni/com/mapswithme/maps/settings/StoragePathActivity.cpp b/android/jni/com/mapswithme/maps/settings/StoragePathActivity.cpp index e51e16baaa..ab904a6389 100644 --- a/android/jni/com/mapswithme/maps/settings/StoragePathActivity.cpp +++ b/android/jni/com/mapswithme/maps/settings/StoragePathActivity.cpp @@ -56,4 +56,10 @@ extern "C" g_framework->NativeFramework()->LoadBookmarks(); return true; } + + JNIEXPORT jboolean JNICALL + Java_com_mapswithme_maps_settings_SettingsActivity_isDownloadingActive(JNIEnv * env, jobject thiz) + { + return g_framework->IsDownloadingActive(); + } } diff --git a/android/res/values-ru/strings.xml b/android/res/values-ru/strings.xml index 419e555031..a4cc8d3d9f 100644 --- a/android/res/values-ru/strings.xml +++ b/android/res/values-ru/strings.xml @@ -259,4 +259,8 @@ Скачайте страну (%s) вашего текущего местоположения Скачайте страну (%s), на которой вы ищете + + Эту настройку сейчас менять нельзя + + Идет загрузка страны diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml index 0e66e209db..cc6bc5486e 100644 --- a/android/res/values/strings.xml +++ b/android/res/values/strings.xml @@ -265,4 +265,8 @@ Download the country (%s) you are searching on + + Can\'t change this setting now + + Downloading of country is in progress now diff --git a/android/src/com/mapswithme/maps/settings/SettingsActivity.java b/android/src/com/mapswithme/maps/settings/SettingsActivity.java index d5e1d2a9c1..cb6ae025ab 100644 --- a/android/src/com/mapswithme/maps/settings/SettingsActivity.java +++ b/android/src/com/mapswithme/maps/settings/SettingsActivity.java @@ -1,6 +1,8 @@ package com.mapswithme.maps.settings; import android.app.Activity; +import android.app.AlertDialog; +import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.preference.ListPreference; @@ -14,6 +16,8 @@ import com.mapswithme.util.Statistics; public class SettingsActivity extends PreferenceActivity { + private native boolean isDownloadingActive(); + @Override protected void onCreate(Bundle savedInstanceState) { @@ -29,8 +33,29 @@ public class SettingsActivity extends PreferenceActivity @Override public boolean onPreferenceClick(Preference preference) { - parent.startActivity(new Intent(parent, StoragePathActivity.class)); - return true; + if (isDownloadingActive()) + { + new AlertDialog.Builder(parent) + .setTitle(parent.getString(R.string.cant_change_this_setting)) + .setMessage(parent.getString(R.string.downloading_is_active)) + .setPositiveButton(parent.getString(R.string.ok), new DialogInterface.OnClickListener() + { + @Override + public void onClick(DialogInterface dlg, int which) + { + dlg.dismiss(); + } + }) + .create() + .show(); + + return false; + } + else + { + parent.startActivity(new Intent(parent, StoragePathActivity.class)); + return true; + } } }); @@ -46,20 +71,20 @@ public class SettingsActivity extends PreferenceActivity } }); } - + @Override protected void onStart() { super.onStart(); - + Statistics.INSTANCE.startActivity(this); } - + @Override protected void onStop() { super.onStop(); - + Statistics.INSTANCE.stopActivity(this); } } diff --git a/storage/storage.cpp b/storage/storage.cpp index 00201aa16a..bb9625eacb 100644 --- a/storage/storage.cpp +++ b/storage/storage.cpp @@ -235,6 +235,11 @@ namespace storage return false; } + bool Storage::IsDownloadInProgress() const + { + return !m_queue.empty(); + } + void Storage::LoadCountriesFile(bool forceReload) { if (forceReload) diff --git a/storage/storage.hpp b/storage/storage.hpp index a2f6a973f9..f80a3a3df7 100644 --- a/storage/storage.hpp +++ b/storage/storage.hpp @@ -115,6 +115,7 @@ namespace storage void DownloadCountry(TIndex const & index); bool DeleteFromDownloader(TIndex const & index); + bool IsDownloadInProgress() const; void NotifyStatusChanged(TIndex const & index) const; diff --git a/strings.txt b/strings.txt index 10f7dca813..a8a5dcbc63 100644 --- a/strings.txt +++ b/strings.txt @@ -1689,3 +1689,13 @@ en = tags = android comment = The app key for Flurry; needed in order for the Android library to build properly. + [cant_change_this_setting] + en = Can't change this setting now + tags = android + comment = Alert message that we can't run Map Storage settings due to some reasons. + ru = Эту настройку сейчас менять нельзя + [downloading_is_active] + en = Downloading of country is in progress now + tags = android + comment = Alert message that downloading is in progress. + ru = Идет загрузка страны