kopia lustrzana https://github.com/ryukoposting/Signal-Android
Fix crash that can occur when using non-standard font sizes.
rodzic
fb9a9b7c96
commit
fcef6f965d
|
@ -19,7 +19,7 @@ class AppearanceSettingsFragment : DSLSettingsFragment(R.string.preferences__app
|
|||
private val themeValues by lazy { resources.getStringArray(R.array.pref_theme_values) }
|
||||
|
||||
private val messageFontSizeLabels by lazy { resources.getStringArray(R.array.pref_message_font_size_entries) }
|
||||
private val messageFontSizeValues by lazy { resources.getStringArray(R.array.pref_message_font_size_values) }
|
||||
private val messageFontSizeValues by lazy { resources.getIntArray(R.array.pref_message_font_size_values) }
|
||||
|
||||
private val languageLabels by lazy { resources.getStringArray(R.array.language_entries) }
|
||||
private val languageValues by lazy { resources.getStringArray(R.array.language_values) }
|
||||
|
@ -53,7 +53,7 @@ class AppearanceSettingsFragment : DSLSettingsFragment(R.string.preferences__app
|
|||
radioListPref(
|
||||
title = DSLSettingsText.from(R.string.preferences_chats__message_text_size),
|
||||
listItems = messageFontSizeLabels,
|
||||
selected = messageFontSizeValues.indexOf(state.messageFontSize.toString()),
|
||||
selected = messageFontSizeValues.indexOf(state.messageFontSize),
|
||||
onSelected = {
|
||||
viewModel.setMessageFontSize(messageFontSizeValues[it].toInt())
|
||||
}
|
||||
|
|
|
@ -23,6 +23,7 @@ import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
|||
import org.thoughtcrime.securesms.webrtc.CallBandwidthMode;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
|
@ -196,12 +197,31 @@ public final class SettingsValues extends SignalStoreValues {
|
|||
}
|
||||
|
||||
public int getMessageQuoteFontSize(@NonNull Context context) {
|
||||
String messageFontSize = String.valueOf(getMessageFontSize());
|
||||
String[] messageSizes = context.getResources().getStringArray(R.array.pref_message_font_size_values);
|
||||
String[] quoteSizes = context.getResources().getStringArray(R.array.pref_message_font_quote_size_values);
|
||||
int index = Arrays.binarySearch(messageSizes, messageFontSize);
|
||||
int currentMessageSize = getMessageFontSize();
|
||||
int[] possibleMessageSizes = context.getResources().getIntArray(R.array.pref_message_font_size_values);
|
||||
int[] possibleQuoteSizes = context.getResources().getIntArray(R.array.pref_message_font_quote_size_values);
|
||||
int sizeIndex = Arrays.binarySearch(possibleMessageSizes, currentMessageSize);
|
||||
|
||||
return Integer.parseInt(quoteSizes[index]);
|
||||
if (sizeIndex < 0) {
|
||||
int closestSizeIndex = 0;
|
||||
int closestSizeDiff = Integer.MAX_VALUE;
|
||||
|
||||
for (int i = 0; i < possibleMessageSizes.length; i++) {
|
||||
int diff = Math.abs(possibleMessageSizes[i] - currentMessageSize);
|
||||
if (diff < closestSizeDiff) {
|
||||
closestSizeIndex = i;
|
||||
closestSizeDiff = diff;
|
||||
}
|
||||
}
|
||||
|
||||
int newSize = possibleMessageSizes[closestSizeIndex];
|
||||
Log.w(TAG, "Using non-standard font size of " + currentMessageSize + ". Closest match was " + newSize + ". Updating.");
|
||||
|
||||
setMessageFontSize(newSize);
|
||||
sizeIndex = Arrays.binarySearch(possibleMessageSizes, newSize);
|
||||
}
|
||||
|
||||
return possibleQuoteSizes[sizeIndex];
|
||||
}
|
||||
|
||||
public void setMessageFontSize(int messageFontSize) {
|
||||
|
|
|
@ -498,7 +498,7 @@ public class TextSecurePreferences {
|
|||
* @deprecated Use {@link SettingsValues#getMessageFontSize()} via {@link org.thoughtcrime.securesms.keyvalue.SignalStore} instead.
|
||||
*/
|
||||
public static int getMessageBodyTextSize(Context context) {
|
||||
return Integer.valueOf(getStringPreference(context, MESSAGE_BODY_TEXT_SIZE_PREF, "16"));
|
||||
return Integer.parseInt(getStringPreference(context, MESSAGE_BODY_TEXT_SIZE_PREF, "16"));
|
||||
}
|
||||
|
||||
public static boolean isTurnOnly(Context context) {
|
||||
|
|
|
@ -343,19 +343,19 @@
|
|||
<item>@string/arrays__extra_large</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="pref_message_font_size_values">
|
||||
<integer-array name="pref_message_font_size_values">
|
||||
<item>14</item>
|
||||
<item>16</item>
|
||||
<item>22</item>
|
||||
<item>28</item>
|
||||
</string-array>
|
||||
</integer-array>
|
||||
|
||||
<string-array name="pref_message_font_quote_size_values">
|
||||
<integer-array name="pref_message_font_quote_size_values">
|
||||
<item>12</item>
|
||||
<item>14</item>
|
||||
<item>18</item>
|
||||
<item>22</item>
|
||||
</string-array>
|
||||
</integer-array>
|
||||
|
||||
<string-array name="pref_notification_priority_entries">
|
||||
<item>@string/arrays__default</item>
|
||||
|
|
Ładowanie…
Reference in New Issue