Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1c4ccdae authored by stefan-niedermann's avatar stefan-niedermann Committed by Niedermann IT-Dienstleistungen
Browse files

#451 Toggle checkboxes in view mode

parent 8cee3a7e
Loading
Loading
Loading
Loading
+26 −22
Original line number Diff line number Diff line
@@ -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,31 @@ 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 multiple 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();
                                    }
                                    return line;
                                }
                        )
                        .build());
        setActiveTextView(noteContent);
        noteContent.setText(markdownProcessor.parse(note.getContent()));