diff options
author | 2015-07-24 17:21:17 +0000 | |
---|---|---|
committer | 2015-07-24 17:21:17 +0000 | |
commit | 570b9bbd09b1fc1603277fdebc7f388056863bbd (patch) | |
tree | 4b432a79b8f43e00eb650033d2b1f9a59ed048d9 /java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerSettingsFragment.java | |
parent | 7678dd694a79f9820440d4390c3c911545d3546e (diff) | |
parent | a6bc0df83e0189b0a5d922078b6abd874aa23ce4 (diff) | |
download | latinime-570b9bbd09b1fc1603277fdebc7f388056863bbd.tar.gz latinime-570b9bbd09b1fc1603277fdebc7f388056863bbd.tar.xz latinime-570b9bbd09b1fc1603277fdebc7f388056863bbd.zip |
am a6bc0df8: am 4e7ed10c: am c13c53c5: am ca8053d7: am 707ca769: Handle Cloud Sync and SpellChecker settings when permission changed
* commit 'a6bc0df83e0189b0a5d922078b6abd874aa23ce4':
Handle Cloud Sync and SpellChecker settings when permission changed
Diffstat (limited to 'java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerSettingsFragment.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerSettingsFragment.java | 54 |
1 files changed, 52 insertions, 2 deletions
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerSettingsFragment.java b/java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerSettingsFragment.java index 6850e9b58..12005c25e 100644 --- a/java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerSettingsFragment.java +++ b/java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerSettingsFragment.java @@ -16,18 +16,31 @@ package com.android.inputmethod.latin.spellcheck; +import android.Manifest; +import android.content.SharedPreferences; import android.os.Bundle; -import android.preference.PreferenceFragment; import android.preference.PreferenceScreen; +import android.preference.SwitchPreference; +import android.text.TextUtils; import com.android.inputmethod.latin.R; +import com.android.inputmethod.latin.permissions.PermissionsManager; +import com.android.inputmethod.latin.permissions.PermissionsUtil; +import com.android.inputmethod.latin.settings.SubScreenFragment; import com.android.inputmethod.latin.settings.TwoStatePreferenceHelper; import com.android.inputmethod.latin.utils.ApplicationUtils; +import static com.android.inputmethod.latin.permissions.PermissionsManager.get; + /** * Preference screen. */ -public final class SpellCheckerSettingsFragment extends PreferenceFragment { +public final class SpellCheckerSettingsFragment extends SubScreenFragment + implements SharedPreferences.OnSharedPreferenceChangeListener, + PermissionsManager.PermissionsResultCallback { + + private SwitchPreference mLookupContactsPreference; + @Override public void onActivityCreated(final Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); @@ -36,5 +49,42 @@ public final class SpellCheckerSettingsFragment extends PreferenceFragment { preferenceScreen.setTitle(ApplicationUtils.getActivityTitleResId( getActivity(), SpellCheckerSettingsActivity.class)); TwoStatePreferenceHelper.replaceCheckBoxPreferencesBySwitchPreferences(preferenceScreen); + + mLookupContactsPreference = (SwitchPreference) findPreference( + AndroidSpellCheckerService.PREF_USE_CONTACTS_KEY); + turnOffLookupContactsIfNoPermission(); + } + + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + if (!TextUtils.equals(key, AndroidSpellCheckerService.PREF_USE_CONTACTS_KEY)) { + return; + } + + if (!sharedPreferences.getBoolean(key, false)) { + // don't care if the preference is turned off. + return; + } + + // Check for permissions. + if (PermissionsUtil.checkAllPermissionsGranted( + getActivity() /* context */, Manifest.permission.READ_CONTACTS)) { + return; // all permissions granted, no need to request permissions. + } + + get(getActivity() /* context */).requestPermissions(this /* PermissionsResultCallback */, + getActivity() /* activity */, Manifest.permission.READ_CONTACTS); + } + + @Override + public void onRequestPermissionsResult(boolean allGranted) { + turnOffLookupContactsIfNoPermission(); + } + + private void turnOffLookupContactsIfNoPermission() { + if (!PermissionsUtil.checkAllPermissionsGranted( + getActivity(), Manifest.permission.READ_CONTACTS)) { + mLookupContactsPreference.setChecked(false); + } } } |