Select text size

pull/183/head
M66B 5 years ago
parent 2ecbe4d3ab
commit 43fb1cd3ff

@ -268,7 +268,7 @@ public class ActivitySignature extends ActivityBase {
public void onClick(DialogInterface dialog, int which) {
String link = etLink.getText().toString();
etText.setSelection(start, end);
StyleHelper.apply(R.id.menu_link, etText, link);
StyleHelper.apply(R.id.menu_link, null, etText, link);
}
})
.setNegativeButton(android.R.string.cancel, null)
@ -276,7 +276,7 @@ public class ActivitySignature extends ActivityBase {
return true;
} else
return StyleHelper.apply(action, etText);
return StyleHelper.apply(action, findViewById(action), etText);
}
private void onImageSelected(Uri uri) {

@ -351,7 +351,7 @@ public class FragmentAnswer extends FragmentBase {
int start = args.getInt("start");
int end = args.getInt("end");
etText.setSelection(start, end);
StyleHelper.apply(R.id.menu_link, etText, link);
StyleHelper.apply(R.id.menu_link, null, etText, link);
}
private void onDelete() {
@ -414,7 +414,7 @@ public class FragmentAnswer extends FragmentBase {
return true;
} else
return StyleHelper.apply(action, etText);
return StyleHelper.apply(action, view.findViewById(action), etText);
}
public static class FragmentInfo extends FragmentDialogBase {

@ -1276,7 +1276,7 @@ public class FragmentCompose extends FragmentBase {
onMenuAnswer();
return true;
case R.id.menu_clear:
StyleHelper.apply(R.id.menu_clear, etBody);
StyleHelper.apply(R.id.menu_clear, null, etBody);
return true;
case R.id.menu_legend:
onMenuLegend();
@ -1464,7 +1464,7 @@ public class FragmentCompose extends FragmentBase {
fragment.show(getParentFragmentManager(), "account:color");
return true;
} else
return StyleHelper.apply(action, etBody);
return StyleHelper.apply(action, view.findViewById(action), etBody);
}
private void onActionRecordAudio() {
@ -2768,7 +2768,7 @@ public class FragmentCompose extends FragmentBase {
int start = args.getInt("start");
int end = args.getInt("end");
etBody.setSelection(start, end);
StyleHelper.apply(R.id.menu_color, etBody, color);
StyleHelper.apply(R.id.menu_color, null, etBody, color);
}
private void onLinkSelected(Bundle args) {
@ -2776,7 +2776,7 @@ public class FragmentCompose extends FragmentBase {
int start = args.getInt("start");
int end = args.getInt("end");
etBody.setSelection(start, end);
StyleHelper.apply(R.id.menu_link, etBody, link);
StyleHelper.apply(R.id.menu_link, null, etBody, link);
}
private void onActionDiscardConfirmed() {
@ -4848,17 +4848,17 @@ public class FragmentCompose extends FragmentBase {
return true;
case KeyEvent.KEYCODE_B:
if (etBody.hasSelection())
return StyleHelper.apply(R.id.menu_bold, etBody);
return StyleHelper.apply(R.id.menu_bold, null, etBody);
else
return false;
case KeyEvent.KEYCODE_I:
if (etBody.hasSelection())
return StyleHelper.apply(R.id.menu_italic, etBody);
return StyleHelper.apply(R.id.menu_italic, null, etBody);
else
return false;
case KeyEvent.KEYCODE_U:
if (etBody.hasSelection())
return StyleHelper.apply(R.id.menu_underline, etBody);
return StyleHelper.apply(R.id.menu_underline, null, etBody);
else
return false;
}

@ -9,13 +9,18 @@ import android.text.style.RelativeSizeSpan;
import android.text.style.StyleSpan;
import android.text.style.URLSpan;
import android.text.style.UnderlineSpan;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import androidx.appcompat.widget.PopupMenu;
import java.util.ArrayList;
import java.util.List;
public class StyleHelper {
static boolean apply(int action, EditText etBody, Object... args) {
static boolean apply(int action, View anchor, EditText etBody, Object... args) {
Log.i("Style action=" + action);
try {
@ -72,25 +77,41 @@ public class StyleHelper {
}
case R.id.menu_size: {
RelativeSizeSpan[] spans = ss.getSpans(start, end, RelativeSizeSpan.class);
float size = (spans.length > 0 ? spans[0].getSizeChange() : 1.0f);
final int s = start;
final int e = end;
final SpannableString t = ss;
// Match small/big
if (size == 0.8f)
size = 1.0f;
else if (size == 1.0)
PopupMenu popupMenu = new PopupMenu(anchor.getContext(), anchor);
popupMenu.getMenu().add(Menu.NONE, R.string.title_style_size_small, 1, R.string.title_style_size_small);
popupMenu.getMenu().add(Menu.NONE, R.string.title_style_size_medium, 2, R.string.title_style_size_medium);
popupMenu.getMenu().add(Menu.NONE, R.string.title_style_size_large, 3, R.string.title_style_size_large);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
RelativeSizeSpan[] spans = t.getSpans(s, e, RelativeSizeSpan.class);
for (RelativeSizeSpan span : spans)
t.removeSpan(span);
float size;
if (item.getItemId() == R.string.title_style_size_small)
size = 0.8f;
else if (item.getItemId() == R.string.title_style_size_large)
size = 1.25f;
else
size = 0.8f;
size = 1.0f;
for (RelativeSizeSpan span : spans)
ss.removeSpan(span);
t.setSpan(new RelativeSizeSpan(size), s, e, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
if (size != 1.0f)
ss.setSpan(new RelativeSizeSpan(size), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
etBody.setText(t);
etBody.setSelection(s, e);
etBody.setText(ss);
etBody.setSelection(start, end);
return false;
}
});
popupMenu.show();
return true;
}

@ -867,6 +867,9 @@
<string name="title_style_italic">Italic</string>
<string name="title_style_underline">Underline</string>
<string name="title_style_size">Size</string>
<string name="title_style_size_small">Small</string>
<string name="title_style_size_medium">Medium</string>
<string name="title_style_size_large">Large</string>
<string name="title_style_color">Color</string>
<string name="title_style_clear">Clear formatting</string>
<string name="title_style_link">Insert link</string>

Loading…
Cancel
Save