Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-notes.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstefan-niedermann <info@niedermann.it>2020-01-02 14:35:33 +0300
committerstefan-niedermann <info@niedermann.it>2020-01-02 14:35:33 +0300
commit11be26bf80694b63ee28bdb7d3e550dd1261755e (patch)
tree6cf386f6a398f9a570a339450f5d9ac1f41a7f47
parent90cd9a1bdae2ac869dbb6bae863afdaf60a38dc2 (diff)
parent1ffb6280d326b71b5a5b4c925595fe251e2b1245 (diff)
Merge remote-tracking branch 'origin/master'v2.4.0
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/android/fragment/NotePreviewFragment.java66
1 files changed, 43 insertions, 23 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/NotePreviewFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/NotePreviewFragment.java
index 032ea2b7..892ca681 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/NotePreviewFragment.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/NotePreviewFragment.java
@@ -4,6 +4,7 @@ import android.content.SharedPreferences;
import android.graphics.Typeface;
import android.os.Bundle;
import android.preference.PreferenceManager;
+import android.text.TextUtils;
import android.text.method.LinkMovementMethod;
import android.util.TypedValue;
import android.view.LayoutInflater;
@@ -75,28 +76,46 @@ public class NotePreviewFragment extends BaseNoteFragment {
markdownProcessor.factory(TextFactory.create());
markdownProcessor.config(
MarkDownUtil.getMarkDownConfiguration(noteContent.getContext())
-// .setOnTodoClickCallback((view, line, lineNumber) -> {
-// String[] lines = TextUtils.split(note.getContent(), "\\r?\\n");
-// /*
-// * Workaround for a bug when checkbox is the last line:
-// * When (un)checking a checkbox which is in the last line, every time it gets toggled, the last character of the line gets lost.
-// */
-// if ((lines.length - 1) == lineNumber) {
-// if(lines[lineNumber].contains("- [ ]")) {
-// lines[lineNumber] = lines[lineNumber].replace("- [ ]", "- [x]");
-// } else {
-// lines[lineNumber] = lines[lineNumber].replace("- [x]", "- [ ]");
-// }
-//
-// } else if (lines.length >= lineNumber) {
-// lines[lineNumber] = line;
-// }
-// changedText = TextUtils.join("\n", lines);
-// noteContent.setText(markdownProcessor.parse(changedText));
-// saveNote(null);
-// return line;
-// }
-// )
+ .setOnTodoClickCallback((view, line, lineNumber) -> {
+ try {
+ String[] lines = TextUtils.split(note.getContent(), "\\r?\\n");
+ /*
+ * Workaround for RxMarkdown-bug:
+ * When (un)checking a checkbox in a note which contains code-blocks, the "`"-characters get stripped out in the TextView and therefore the given lineNumber is wrong
+ * Find number of lines starting with ``` before lineNumber
+ */
+ for(int i = 0; i < lines.length; i++) {
+ if(lines[i].startsWith("```")) {
+ lineNumber++;
+ }
+ if(i == lineNumber) {
+ break;
+ }
+ }
+
+ /*
+ * Workaround for multiple RxMarkdown-bugs:
+ * When (un)checking a checkbox which is in the last line, every time it gets toggled, the last character of the line gets lost.
+ * When (un)checking a checkbox, every markdown gets stripped in the given line argument
+ */
+ if (lines[lineNumber].startsWith("- [ ]") || lines[lineNumber].startsWith("* [ ]")) {
+ lines[lineNumber] = lines[lineNumber].replace("- [ ]", "- [x]");
+ lines[lineNumber] = lines[lineNumber].replace("* [ ]", "* [x]");
+ } else {
+ lines[lineNumber] = lines[lineNumber].replace("- [x]", "- [ ]");
+ lines[lineNumber] = lines[lineNumber].replace("* [x]", "* [ ]");
+ }
+
+ changedText = TextUtils.join("\n", lines);
+ noteContent.setText(markdownProcessor.parse(changedText));
+ saveNote(null);
+ } catch (IndexOutOfBoundsException e) {
+ Toast.makeText(getActivity(), "Checkbox could not be toggled.", Toast.LENGTH_SHORT).show();
+ e.printStackTrace();
+ }
+ return line;
+ }
+ )
.build());
setActiveTextView(noteContent);
noteContent.setText(markdownProcessor.parse(note.getContent()));
@@ -111,7 +130,8 @@ public class NotePreviewFragment extends BaseNoteFragment {
db.getNoteServerSyncHelper().addCallbackPull(new ICallback() {
@Override
public void onFinish() {
- noteContent.setText(markdownProcessor.parse(db.getNote(note.getAccountId(), note.getId()).getContent()));
+ note = db.getNote(note.getAccountId(), note.getId());
+ noteContent.setText(markdownProcessor.parse(note.getContent()));
swipeRefreshLayout.setRefreshing(false);
}