Added inserting lines to style toolbar

This commit is contained in:
M66B
2022-12-27 09:31:13 +01:00
parent baf40e1eb0
commit 5cd93fa972
3 changed files with 47 additions and 34 deletions

View File

@@ -51,7 +51,6 @@ import android.text.style.UnderlineSpan;
import android.util.LogPrinter;
import android.util.Pair;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
@@ -107,6 +106,7 @@ public class StyleHelper {
R.id.menu_style_subscript,
R.id.menu_style_superscript,
R.id.menu_style_strikethrough,
R.id.menu_style_insert_line,
R.id.menu_style_password,
R.id.menu_style_code,
R.id.menu_style_clear
@@ -375,7 +375,8 @@ public class StyleHelper {
itemId != R.id.menu_style_align && groupId != group_style_align &&
itemId != R.id.menu_style_list && groupId != group_style_list &&
itemId != R.id.menu_style_indentation && groupId != group_style_indentation &&
itemId != R.id.menu_style_blockquote) {
itemId != R.id.menu_style_blockquote &&
itemId != R.id.menu_style_insert_line) {
Pair<Integer, Integer> word = getWord(etBody);
if (word == null)
return false;
@@ -418,6 +419,8 @@ public class StyleHelper {
return setSuperscript(etBody, start, end, false);
else if (itemId == R.id.menu_style_strikethrough)
return setStrikeThrough(etBody, start, end, false);
else if (itemId == R.id.menu_style_insert_line)
return setLine(etBody, end);
else if (itemId == R.id.menu_style_password)
return setPassword(owner, etBody, start, end);
else if (itemId == R.id.menu_style_code) {
@@ -1191,6 +1194,31 @@ public class StyleHelper {
return true;
}
static boolean setLine(EditText etBody, int end) {
Log.breadcrumb("style", "action", "line");
Context context = etBody.getContext();
Editable edit = etBody.getText();
if (end == 0 || edit.charAt(end - 1) != '\n')
edit.insert(end++, "\n");
if (end == edit.length() || edit.charAt(end) != '\n')
edit.insert(end, "\n");
edit.insert(end, "\uFFFC"); // Object replacement character
int colorSeparator = Helper.resolveColor(context, R.attr.colorSeparator);
float stroke = context.getResources().getDisplayMetrics().density;
edit.setSpan(
new LineSpan(colorSeparator, stroke, 0f),
end, end + 1,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
etBody.setSelection(end + 2);
return true;
}
static boolean setPassword(LifecycleOwner owner, EditText etBody, int start, int end) {
Log.breadcrumb("style", "action", "password");