diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java b/app/src/main/java/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java index 5d147200da..7dd5a0f7a3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java @@ -62,7 +62,11 @@ import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.thoughtcrime.securesms.util.ThemeUtil; import org.thoughtcrime.securesms.util.concurrent.SignalExecutors; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; import java.util.Locale; +import java.util.Map; import java.util.Objects; import java.util.concurrent.TimeUnit; @@ -555,10 +559,15 @@ public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment final PhoneNumberPrivacyValues.PhoneNumberSharingMode[] value = { phoneNumberPrivacyValues.getPhoneNumberSharingMode() }; + Map items = items(requireContext()); + List modes = new ArrayList<>(items.keySet()); + CharSequence[] modeStrings = items.values().toArray(new CharSequence[0]); + int selectedMode = modes.indexOf(value[0]); + new AlertDialog.Builder(requireActivity()) .setTitle(R.string.preferences_app_protection__see_my_phone_number) .setCancelable(true) - .setSingleChoiceItems(items(requireContext()), value[0].ordinal(), (dialog, which) -> value[0] = PhoneNumberPrivacyValues.PhoneNumberSharingMode.values()[which]) + .setSingleChoiceItems(modeStrings, selectedMode, (dialog, which) -> value[0] = modes.get(which)) .setPositiveButton(android.R.string.ok, (dialog, which) -> { PhoneNumberPrivacyValues.PhoneNumberSharingMode phoneNumberSharingMode = value[0]; phoneNumberPrivacyValues.setPhoneNumberSharingMode(phoneNumberSharingMode); @@ -572,13 +581,14 @@ public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment return true; } - private CharSequence[] items(Context context) { - return new CharSequence[]{ - titleAndDescription(context, context.getString(R.string.PhoneNumberPrivacy_everyone), context.getString(R.string.PhoneNumberPrivacy_everyone_see_description)), - titleAndDescription(context, context.getString(R.string.PhoneNumberPrivacy_my_contacts), context.getString(R.string.PhoneNumberPrivacy_my_contacts_see_description)), - context.getString(R.string.PhoneNumberPrivacy_nobody) }; - } + private Map items(Context context) { + Map map = new LinkedHashMap<>(); + map.put(PhoneNumberPrivacyValues.PhoneNumberSharingMode.EVERYONE, titleAndDescription(context, context.getString(R.string.PhoneNumberPrivacy_everyone), context.getString(R.string.PhoneNumberPrivacy_everyone_see_description))); + map.put(PhoneNumberPrivacyValues.PhoneNumberSharingMode.NOBODY, context.getString(R.string.PhoneNumberPrivacy_nobody)); + + return map; + } } private final class PhoneNumberPrivacyWhoCanFindClickListener implements Preference.OnPreferenceClickListener {