Added inserting lines to style toolbar

pull/210/head
M66B 2 years ago
parent baf40e1eb0
commit 5cd93fa972

@ -317,37 +317,7 @@ public class EditTextCompose extends FixedEditText {
}
private boolean insertLine() {
try {
int start = getSelectionStart();
if (start < 0)
return false;
Editable edit = getText();
if (edit == null)
return false;
if (start == 0 || edit.charAt(start - 1) != '\n')
edit.insert(start++, "\n");
if (start == edit.length() || edit.charAt(start) != '\n')
edit.insert(start, "\n");
edit.insert(start, "\uFFFC"); // Object replacement character
int colorSeparator = Helper.resolveColor(getContext(), R.attr.colorSeparator);
float stroke = context.getResources().getDisplayMetrics().density;
edit.setSpan(
new LineSpan(colorSeparator, stroke, 0f),
start, start + 1,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
setSelection(start + 2);
return true;
} catch (Throwable ex) {
Log.e(ex);
ToastEx.makeText(context, Log.formatThrowable(ex), Toast.LENGTH_LONG).show();
return false;
}
return StyleHelper.apply(R.id.menu_style_insert_line, null, null, EditTextCompose.this);
}
private boolean insertSnippet(long id) {

@ -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");

@ -254,6 +254,21 @@
app:srcCompat="@drawable/twotone_format_strikethrough_24"
app:tint="@color/action_foreground" />
<ImageButton
android:id="@+id/menu_style_insert_line"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/title_insert_line"
android:paddingHorizontal="12dp"
android:paddingVertical="6dp"
android:scaleType="fitCenter"
android:tooltipText="@string/title_insert_line"
app:layout_constraintStart_toEndOf="@id/menu_style_strikethrough"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/twotone_horizontal_rule_24"
app:tint="@color/action_foreground" />
<ImageButton
android:id="@+id/menu_style_password"
android:layout_width="wrap_content"
@ -264,7 +279,7 @@
android:paddingVertical="6dp"
android:scaleType="fitCenter"
android:tooltipText="@string/title_style_protect"
app:layout_constraintStart_toEndOf="@id/menu_style_strikethrough"
app:layout_constraintStart_toEndOf="@id/menu_style_insert_line"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/twotone_lock_24"
app:tint="@color/action_foreground" />

Loading…
Cancel
Save