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 = Идет загрузка страны