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

Commit 691d8c9e authored by Stefan Niedermann's avatar Stefan Niedermann Committed by Niedermann IT-Dienstleistungen
Browse files

Allow only once listener to be set

parent ee06cb6e
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -40,10 +40,11 @@ public interface MarkdownEditor {
    LiveData<CharSequence> getMarkdownString();

    /**
     * Similar to {@link #getMarkdownString()} but without {@link LiveData}.
     * @param onChange a {@link Consumer} which will receive the changed markdown string.
     * Similar to {@link #getMarkdownString()} but without {@link LiveData}. Will remove previously set {@link Consumer}s.
     *
     * @param listener a {@link Consumer} which will receive the changed markdown string.
     */
    void registerMarkdownStringChangedListener(@NonNull Consumer<CharSequence> onChange);
    void setMarkdownStringChangedListener(@Nullable Consumer<CharSequence> listener);

    void setEnabled(boolean enabled);

+5 −4
Original line number Diff line number Diff line
@@ -43,7 +43,8 @@ public class MarkwonMarkdownEditor extends AppCompatEditText implements Markdown

    private static final String TAG = MarkwonMarkdownEditor.class.getSimpleName();

    private final Collection<Consumer<CharSequence>> markdownStringListeners = new LinkedList<>();
    @Nullable
    private Consumer<CharSequence> listener;
    private final MutableLiveData<CharSequence> unrenderedText$ = new MutableLiveData<>();
    private final CombinedTextWatcher combinedWatcher;

@@ -122,7 +123,7 @@ public class MarkwonMarkdownEditor extends AppCompatEditText implements Markdown
     */
    public void setMarkdownStringModel(CharSequence text) {
        unrenderedText$.setValue(text == null ? "" : text.toString());
        for (Consumer<CharSequence> listener : markdownStringListeners) {
        if (listener != null) {
            listener.accept(text);
        }
    }
@@ -133,7 +134,7 @@ public class MarkwonMarkdownEditor extends AppCompatEditText implements Markdown
    }

    @Override
    public void registerMarkdownStringChangedListener(@NonNull Consumer<CharSequence> onChange) {
        this.markdownStringListeners.add(onChange);
    public void setMarkdownStringChangedListener(@Nullable Consumer<CharSequence> listener) {
        this.listener = listener;
    }
}
+5 −6
Original line number Diff line number Diff line
@@ -12,8 +12,6 @@ import androidx.appcompat.widget.AppCompatTextView;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;

import java.util.Collection;
import java.util.LinkedList;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -55,7 +53,8 @@ public class MarkwonMarkdownViewer extends AppCompatTextView implements Markdown
    private static final Prism4j prism4j = new Prism4j(new MarkwonGrammarLocator());

    private Markwon markwon;
    private final Collection<Consumer<CharSequence>> markdownStringListeners = new LinkedList<>();
    @Nullable
    private Consumer<CharSequence> listener = null;
    private final MutableLiveData<CharSequence> unrenderedText$ = new MutableLiveData<>();

    private final ExecutorService renderService;
@@ -130,7 +129,7 @@ public class MarkwonMarkdownViewer extends AppCompatTextView implements Markdown
    public void setMarkdownString(CharSequence text) {
        final CharSequence previousText = this.unrenderedText$.getValue();
        this.unrenderedText$.setValue(text);
        for (Consumer<CharSequence> listener : markdownStringListeners) {
        if (listener != null) {
            listener.accept(text);
        }
        if (TextUtils.isEmpty(text)) {
@@ -174,7 +173,7 @@ public class MarkwonMarkdownViewer extends AppCompatTextView implements Markdown
    }

    @Override
    public void registerMarkdownStringChangedListener(@NonNull Consumer<CharSequence> onChange) {
        this.markdownStringListeners.add(onChange);
    public void setMarkdownStringChangedListener(@Nullable Consumer<CharSequence> listener) {
        this.listener = listener;
    }
}