Added default send font size option

This commit is contained in:
M66B
2024-12-21 09:21:20 +01:00
parent b49072eac2
commit b59ce60dec
4 changed files with 76 additions and 10 deletions

View File

@@ -34,6 +34,7 @@ import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.text.style.RelativeSizeSpan;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
@@ -98,6 +99,7 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc
private ViewButtonColor btnComposeColor;
private Spinner spComposeFont;
private Spinner spComposeTextSize;
private SwitchCompat swComposeMonospaced;
private SwitchCompat swPrefixOnce;
private SwitchCompat swPrefixCount;
@@ -146,7 +148,7 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc
"send_delayed", "send_undo",
"answer_single", "answer_action",
"sound_sent",
"compose_color", "compose_font", "compose_monospaced",
"compose_color", "compose_font", "compose_text_size", "compose_monospaced",
"prefix_once", "prefix_count", "alt_re", "alt_fwd",
"separate_reply", "extended_reply", "template_reply", "write_below", "quote_reply", "quote_limit",
"resize_reply", "resize_paste",
@@ -197,6 +199,7 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc
btnComposeColor = view.findViewById(R.id.btnComposeColor);
spComposeFont = view.findViewById(R.id.spComposeFont);
spComposeTextSize = view.findViewById(R.id.spComposeTextSize);
swComposeMonospaced = view.findViewById(R.id.swComposeMonospaced);
swPrefixOnce = view.findViewById(R.id.swPrefixOnce);
swPrefixCount = view.findViewById(R.id.swPrefixCount);
@@ -239,7 +242,7 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc
List<StyleHelper.FontDescriptor> fonts = StyleHelper.getFonts(getContext(), false);
List<CharSequence> fn = new ArrayList<>();
fn.add("-");
fn.add(getString(R.string.title_style_font_default));
for (int i = 0; i < fonts.size(); i++) {
StyleHelper.FontDescriptor font = fonts.get(i);
SpannableStringBuilder ssb = new SpannableStringBuilderEx(font.toString());
@@ -248,9 +251,31 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc
fn.add(ssb);
}
ArrayAdapter<CharSequence> adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_item, fn);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spComposeFont.setAdapter(adapter);
ArrayAdapter<CharSequence> fontAdapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_item, fn);
fontAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spComposeFont.setAdapter(fontAdapter);
int[] textSizeTitles = new int[]{
R.string.title_style_size_xsmall,
R.string.title_style_size_small,
R.string.title_style_size_medium,
R.string.title_style_size_large,
R.string.title_style_size_xlarge};
List<CharSequence> ts = new ArrayList<>();
ts.add(getString(R.string.title_style_font_default));
for (int i = 0; i < textSizeTitles.length; i++) {
SpannableStringBuilder ssb = new SpannableStringBuilderEx(getString(textSizeTitles[i]));
Float size = HtmlHelper.getFontSize(HtmlHelper.fontSizeNames[i], 1.0f);
if (size == null)
size = 1.0f;
ssb.setSpan(new RelativeSizeSpan(size), 0, ssb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
ts.add(ssb);
}
ArrayAdapter<CharSequence> sizeAdapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_item, ts);
sizeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spComposeTextSize.setAdapter(sizeAdapter);
setOptions();
@@ -572,6 +597,21 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc
}
});
spComposeTextSize.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
if (position == 0)
prefs.edit().remove("compose_text_size").apply();
else
prefs.edit().putString("compose_text_size", HtmlHelper.fontSizeNames[position - 1]).apply();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
prefs.edit().remove("compose_text_size").apply();
}
});
swComposeMonospaced.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@@ -1009,6 +1049,13 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc
}
}
String compose_text_size = prefs.getString("compose_text_size", "");
for (int pos = 0; pos < HtmlHelper.fontSizeNames.length; pos++)
if (HtmlHelper.fontSizeNames[pos].equals(compose_text_size)) {
spComposeTextSize.setSelection(pos + 1);
break;
}
swComposeMonospaced.setChecked(prefs.getBoolean("compose_monospaced", false));
swPrefixOnce.setChecked(prefs.getBoolean("prefix_once", true));