diff --git a/android/res/values/donottranslate.xml b/android/res/values/donottranslate.xml
index a41dcd4d10..27348cf921 100644
--- a/android/res/values/donottranslate.xml
+++ b/android/res/values/donottranslate.xml
@@ -44,6 +44,8 @@
TtsEnabled
TtsLanguage
TtsInfo
+ TtsInfoLink
+ https://support.maps.me/hc/en-us/articles/208628985-How-can-I-check-TTS-settings-on-my-Android-device-
AutoDownloadMap
3D
3DBuildings
diff --git a/android/res/xml/prefs_main.xml b/android/res/xml/prefs_main.xml
index 2c7cfbb4f3..3fa0b16d07 100644
--- a/android/res/xml/prefs_main.xml
+++ b/android/res/xml/prefs_main.xml
@@ -137,6 +137,13 @@
android:enabled="false"
android:summary="@string/prefs_languages_information"
android:order="3"/>
+
diff --git a/android/src/com/mapswithme/maps/settings/SettingsPrefsFragment.java b/android/src/com/mapswithme/maps/settings/SettingsPrefsFragment.java
index bdb8bcf264..c2a966cfc6 100644
--- a/android/src/com/mapswithme/maps/settings/SettingsPrefsFragment.java
+++ b/android/src/com/mapswithme/maps/settings/SettingsPrefsFragment.java
@@ -3,15 +3,21 @@ package com.mapswithme.maps.settings;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
+import android.net.Uri;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
+import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.preference.ListPreference;
import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
import android.support.v7.preference.TwoStatePreference;
+import android.text.Spannable;
+import android.text.SpannableString;
+import android.text.style.ForegroundColorSpan;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability;
@@ -30,6 +36,7 @@ import com.mapswithme.maps.sound.TtsPlayer;
import com.mapswithme.util.Config;
import com.mapswithme.util.NetworkPolicy;
import com.mapswithme.util.ThemeSwitcher;
+import com.mapswithme.util.UiUtils;
import com.mapswithme.util.concurrency.UiThread;
import com.mapswithme.util.log.LoggerFactory;
import com.mapswithme.util.statistics.AlohaHelper;
@@ -43,6 +50,10 @@ import java.util.Map;
public class SettingsPrefsFragment extends BaseXmlSettingsFragment
{
private static final int REQUEST_INSTALL_DATA = 1;
+ private static final String TTS_SCREEN_KEY = MwmApplication.get()
+ .getString(R.string.pref_tts_screen);
+ private static final String TTS_INFO_LINK = MwmApplication.get()
+ .getString(R.string.tts_info_link);
@NonNull
private final StoragePathManager mPathManager = new StoragePathManager();
@@ -55,6 +66,9 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment
private ListPreference mPrefLanguages;
@Nullable
private Preference mLangInfo;
+ @Nullable
+ private Preference mLangInfoLink;
+ private PreferenceScreen mPreferenceScreen;
@NonNull
private final Map mLanguages = new HashMap<>();
@@ -97,6 +111,8 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment
mPrefLanguages.setEnabled(false);
if (mLangInfo != null)
mLangInfo.setSummary(R.string.prefs_languages_information_off);
+ if (mLangInfoLink != null && isOnTtsScreen())
+ getPreferenceScreen().addPreference(mLangInfoLink);
if (root != null)
root.setSummary(R.string.off);
@@ -112,6 +128,8 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment
root.setSummary(R.string.on);
if (mPrefEnabled != null)
mPrefEnabled.setTitle(R.string.on);
+ if (mLangInfoLink != null)
+ getPreferenceScreen().removePreference(mLangInfoLink);
if (mCurrentLanguage != null && mCurrentLanguage.downloaded)
{
@@ -166,7 +184,7 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment
private void updateTts()
{
- if (mPrefEnabled == null || mPrefLanguages == null || mLangInfo == null)
+ if (mPrefEnabled == null || mPrefLanguages == null || mLangInfo == null || mLangInfoLink == null)
return;
enableListeners(false);
@@ -186,6 +204,8 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment
mPrefLanguages.setEnabled(false);
mPrefLanguages.setSummary(null);
mLangInfo.setSummary(R.string.prefs_languages_information_off);
+ if (isOnTtsScreen())
+ getPreferenceScreen().addPreference(mLangInfoLink);
if (root != null)
root.setSummary(R.string.off);
@@ -199,6 +219,10 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment
mPrefEnabled.setTitle(enabled ? R.string.on : R.string.off);
mLangInfo.setSummary(enabled ? R.string.prefs_languages_information
: R.string.prefs_languages_information_off);
+ if (enabled)
+ getPreferenceScreen().removePreference(mLangInfoLink);
+ else if (isOnTtsScreen())
+ getPreferenceScreen().addPreference(mLangInfoLink);
if (root != null)
root.setSummary(enabled ? R.string.on : R.string.off);
@@ -227,6 +251,11 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment
enableListeners(true);
}
+ private boolean isOnTtsScreen()
+ {
+ return mPreferenceScreen.getKey() != null && mPreferenceScreen.getKey().equals(TTS_SCREEN_KEY);
+ }
+
@Override
public Fragment getCallbackFragment()
{
@@ -244,10 +273,32 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment
{
super.onCreate(savedInstanceState);
+ mPreferenceScreen = getPreferenceScreen();
mStoragePref = findPreference(getString(R.string.pref_storage));
mPrefEnabled = (TwoStatePreference) findPreference(getString(R.string.pref_tts_enabled));
mPrefLanguages = (ListPreference) findPreference(getString(R.string.pref_tts_language));
mLangInfo = findPreference(getString(R.string.pref_tts_info));
+ mLangInfoLink = findPreference(getString(R.string.pref_tts_info_link));
+ if (mLangInfoLink != null)
+ {
+ Spannable link = new SpannableString(getString(R.string.prefs_languages_information_off_link));
+ link.setSpan(new ForegroundColorSpan(ContextCompat.getColor(getContext(),
+ UiUtils.getStyledResourceId(getContext(), R.attr.colorAccent))),
+ 0, link.length(), 0);
+ mLangInfoLink.setSummary(link);
+ mLangInfoLink.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener()
+ {
+ @Override
+ public boolean onPreferenceClick(Preference preference)
+ {
+ final Intent intent = new Intent(Intent.ACTION_VIEW);
+ intent.setData(Uri.parse(TTS_INFO_LINK));
+ getContext().startActivity(intent);
+ return false;
+ }
+ });
+ mPreferenceScreen.removePreference(mLangInfoLink);
+ }
updateStoragePrefs();
initStoragePrefCallbacks();
initMeasureUnitsPrefsCallbacks();