diff options
author | Stefan Niedermann <info@niedermann.it> | 2020-12-21 16:23:04 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2020-12-21 16:23:04 +0300 |
commit | b0fc752ac086863b539605edd22eb1b7f0b8242e (patch) | |
tree | d03ebea3d77f6eec83431bc58ee123a4676e851f | |
parent | 17df854adf30ec1c77a89f0e2032f5b99c19870f (diff) |
Remove app side list auto continuation & version bump to 2.18.1v2.18.1
3 files changed, 13 insertions, 104 deletions
diff --git a/app/build.gradle b/app/build.gradle index 3b091270..5b830c5d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,8 +13,8 @@ android { applicationId "it.niedermann.owncloud.notes" minSdkVersion 19 targetSdkVersion 29 - versionCode 2018000 - versionName "2.18.0" + versionCode 2018001 + versionName "2.18.1" multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/edit/NoteEditFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/edit/NoteEditFragment.java index 4018bbe6..db657b7f 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/edit/NoteEditFragment.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/edit/NoteEditFragment.java @@ -122,10 +122,19 @@ public class NoteEditFragment extends SearchableBaseNoteFragment { public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - textWatcher = new NotesTextWatcher(binding.editContent) { + textWatcher = new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + // Nothing to do here... + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + // Nothing to do here... + } + @Override public void afterTextChanged(final Editable s) { - super.afterTextChanged(s); unsavedEdit = true; if (!saveActive) { handler.removeCallbacks(runAutoSave); diff --git a/app/src/main/java/it/niedermann/owncloud/notes/edit/NotesTextWatcher.java b/app/src/main/java/it/niedermann/owncloud/notes/edit/NotesTextWatcher.java deleted file mode 100644 index f9ced1ae..00000000 --- a/app/src/main/java/it/niedermann/owncloud/notes/edit/NotesTextWatcher.java +++ /dev/null @@ -1,100 +0,0 @@ -package it.niedermann.owncloud.notes.edit; - -import android.text.Editable; -import android.text.TextWatcher; -import android.util.Log; -import android.widget.EditText; - -import androidx.annotation.NonNull; - -import it.niedermann.owncloud.notes.shared.util.MarkDownUtil; - -import static it.niedermann.owncloud.notes.shared.util.MarkDownUtil.CHECKBOX_UNCHECKED_MINUS_TRAILING_SPACE; -import static it.niedermann.owncloud.notes.shared.util.MarkDownUtil.CHECKBOX_UNCHECKED_STAR_TRAILING_SPACE; - -/** - * Implements auto-continuation for checked-lists - */ -public abstract class NotesTextWatcher implements TextWatcher { - - private static final String TAG = NotesTextWatcher.class.getSimpleName(); - - private static final String codeBlock = "```"; - - private static final int lengthCheckbox = 6; - - private boolean resetSelection = false; - private boolean afterTextChangedHandeled = false; - private int resetSelectionTo = -1; - - private final EditText editText; - - protected NotesTextWatcher(EditText editText) { - this.editText = editText; - } - - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - // Nothing to do here... - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - // https://github.com/stefan-niedermann/nextcloud-notes/issues/608 - if (count == 1 && s.charAt(start) == '\n') { // 'Enter' was pressed - autoContinueCheckboxListsOnEnter(s, start, count); - } - // https://github.com/stefan-niedermann/nextcloud-notes/issues/558 - if (s.toString().contains(codeBlock)) { - preventCursorJumpToTopWithinCodeBlock(s, start, count); - } - } - - @Override - public void afterTextChanged(Editable s) { - if (resetSelection && !afterTextChangedHandeled) { - Log.v(TAG, "Resetting selection to " + resetSelectionTo); - afterTextChangedHandeled = true; - setNewText(new StringBuilder(s), resetSelectionTo); - afterTextChangedHandeled = false; - resetSelection = false; - resetSelectionTo = -1; - } - } - - private void autoContinueCheckboxListsOnEnter(@NonNull CharSequence s, int start, int count) { - // Find start of line - int startOfLine = MarkDownUtil.getStartOfLine(s, start); - String line = s.subSequence(startOfLine, start).toString(); - - if (line.equals(CHECKBOX_UNCHECKED_MINUS_TRAILING_SPACE) || line.equals(CHECKBOX_UNCHECKED_STAR_TRAILING_SPACE)) { - editText.setSelection(startOfLine + 1); - setNewText(new StringBuilder(s).replace(startOfLine, startOfLine + lengthCheckbox + 1, "\n"), startOfLine + 1); - } else if (MarkDownUtil.lineStartsWithCheckbox(line, false)) { - setNewText(new StringBuilder(s).insert(start + count, CHECKBOX_UNCHECKED_MINUS_TRAILING_SPACE), start + lengthCheckbox + 1); - } else if (MarkDownUtil.lineStartsWithCheckbox(line, true)) { - setNewText(new StringBuilder(s).insert(start + count, CHECKBOX_UNCHECKED_STAR_TRAILING_SPACE), start + lengthCheckbox + 1); - } - } - - private void preventCursorJumpToTopWithinCodeBlock(@NonNull CharSequence s, int start, int count) { - // Find start of line - int startOfLine = MarkDownUtil.getStartOfLine(s, start); - String line = s.subSequence(startOfLine, start).toString(); - // "start" is the direct sibling of the codeBlock - if (line.startsWith(codeBlock) && start - startOfLine == codeBlock.length() && !resetSelection) { - resetSelectionTo = editText.getSelectionEnd(); - resetSelection = true; - Log.v(TAG, "Entered a character directly behind a codeBlock - prepare selection reset to " + resetSelectionTo); - } else if (s.subSequence(startOfLine, start + count).toString().startsWith(codeBlock) && !resetSelection) { - resetSelectionTo = editText.getSelectionEnd(); - resetSelection = true; - Log.v(TAG, "One completed a ``-codeBlock with the third `-character - prepare selection reset to " + resetSelectionTo); - } - } - - private void setNewText(@NonNull StringBuilder newText, int selection) { - editText.setText(newText); - editText.setSelection(selection); - } -} |