From 70b82194e1e03f09f048e28ecc8bfa24bfc8b5a2 Mon Sep 17 00:00:00 2001 From: Agnieszka C <85929121+Aga-C@users.noreply.github.com> Date: Wed, 19 Mar 2025 22:00:36 +0100 Subject: [PATCH 1/4] Fixed multiline pasting for checklist (#99) --- .../notes/dialogs/NewChecklistItemDialog.kt | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/org/fossify/notes/dialogs/NewChecklistItemDialog.kt b/app/src/main/kotlin/org/fossify/notes/dialogs/NewChecklistItemDialog.kt index 9f57ac2f3..5b617114b 100644 --- a/app/src/main/kotlin/org/fossify/notes/dialogs/NewChecklistItemDialog.kt +++ b/app/src/main/kotlin/org/fossify/notes/dialogs/NewChecklistItemDialog.kt @@ -57,7 +57,7 @@ class NewChecklistItemDialog(val activity: Activity, callback: (titles: ArrayLis } } - private fun addNewEditText() { + private fun addNewEditText(initialText: String? = null) { ItemAddChecklistBinding.inflate(activity.layoutInflater).apply { titleEditText.setOnEditorActionListener { _, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_NEXT || actionId == EditorInfo.IME_ACTION_DONE || actionId == KeyEvent.KEYCODE_ENTER) { @@ -67,6 +67,21 @@ class NewChecklistItemDialog(val activity: Activity, callback: (titles: ArrayLis false } } + titleEditText.onTextChangeListener { text -> + val lines = text.split("\n").filter { it.trim().isNotEmpty() } + if (lines.size > 1) { + lines.forEachIndexed { i, line -> + if (i == 0) { + titleEditText.setText(line) + } else { + addNewEditText(line) + } + } + } + } + if (initialText != null) { + titleEditText.setText(initialText) + } titles.add(titleEditText) binding.checklistHolder.addView(this.root) activity.updateTextColors(binding.checklistHolder) From cb3278e6c655de64c03fe04e901a32362ac3c9fd Mon Sep 17 00:00:00 2001 From: Agnieszka C <85929121+Aga-C@users.noreply.github.com> Date: Thu, 20 Mar 2025 10:29:38 +0000 Subject: [PATCH 2/4] Used lines extension instead of split Co-authored-by: Naveen Singh <36371707+naveensingh@users.noreply.github.com> --- .../kotlin/org/fossify/notes/dialogs/NewChecklistItemDialog.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/kotlin/org/fossify/notes/dialogs/NewChecklistItemDialog.kt b/app/src/main/kotlin/org/fossify/notes/dialogs/NewChecklistItemDialog.kt index 5b617114b..1f5c70837 100644 --- a/app/src/main/kotlin/org/fossify/notes/dialogs/NewChecklistItemDialog.kt +++ b/app/src/main/kotlin/org/fossify/notes/dialogs/NewChecklistItemDialog.kt @@ -68,7 +68,7 @@ class NewChecklistItemDialog(val activity: Activity, callback: (titles: ArrayLis } } titleEditText.onTextChangeListener { text -> - val lines = text.split("\n").filter { it.trim().isNotEmpty() } + val lines = text.lines().filter { it.trim().isNotEmpty() } if (lines.size > 1) { lines.forEachIndexed { i, line -> if (i == 0) { From df3c55cba1b261a21fd00eb8b8dbdfc5b90f8b3a Mon Sep 17 00:00:00 2001 From: Agnieszka C <85929121+Aga-C@users.noreply.github.com> Date: Thu, 20 Mar 2025 18:17:04 +0100 Subject: [PATCH 3/4] Fixed inserting inside the list --- .../notes/dialogs/NewChecklistItemDialog.kt | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/org/fossify/notes/dialogs/NewChecklistItemDialog.kt b/app/src/main/kotlin/org/fossify/notes/dialogs/NewChecklistItemDialog.kt index 1f5c70837..a8293b8ac 100644 --- a/app/src/main/kotlin/org/fossify/notes/dialogs/NewChecklistItemDialog.kt +++ b/app/src/main/kotlin/org/fossify/notes/dialogs/NewChecklistItemDialog.kt @@ -57,7 +57,7 @@ class NewChecklistItemDialog(val activity: Activity, callback: (titles: ArrayLis } } - private fun addNewEditText(initialText: String? = null) { + private fun addNewEditText(initialText: String? = null, position: Int? = null) { ItemAddChecklistBinding.inflate(activity.layoutInflater).apply { titleEditText.setOnEditorActionListener { _, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_NEXT || actionId == EditorInfo.IME_ACTION_DONE || actionId == KeyEvent.KEYCODE_ENTER) { @@ -70,11 +70,12 @@ class NewChecklistItemDialog(val activity: Activity, callback: (titles: ArrayLis titleEditText.onTextChangeListener { text -> val lines = text.lines().filter { it.trim().isNotEmpty() } if (lines.size > 1) { + val currentPosition = titles.indexOf(titleEditText) lines.forEachIndexed { i, line -> if (i == 0) { titleEditText.setText(line) } else { - addNewEditText(line) + addNewEditText(line, currentPosition + i) } } } @@ -82,8 +83,13 @@ class NewChecklistItemDialog(val activity: Activity, callback: (titles: ArrayLis if (initialText != null) { titleEditText.setText(initialText) } - titles.add(titleEditText) - binding.checklistHolder.addView(this.root) + if (position != null && position < titles.size) { + titles.add(position, titleEditText) + binding.checklistHolder.addView(this.root, position) + } else { + titles.add(titleEditText) + binding.checklistHolder.addView(this.root) + } activity.updateTextColors(binding.checklistHolder) binding.dialogHolder.post { binding.dialogHolder.fullScroll(View.FOCUS_DOWN) From 3e1a92c60985af0563d54d368b87bde292a62c55 Mon Sep 17 00:00:00 2001 From: Agnieszka C <85929121+Aga-C@users.noreply.github.com> Date: Thu, 20 Mar 2025 19:59:35 +0100 Subject: [PATCH 4/4] Fixed minor bugs --- .../org/fossify/notes/dialogs/NewChecklistItemDialog.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/org/fossify/notes/dialogs/NewChecklistItemDialog.kt b/app/src/main/kotlin/org/fossify/notes/dialogs/NewChecklistItemDialog.kt index a8293b8ac..df91d6131 100644 --- a/app/src/main/kotlin/org/fossify/notes/dialogs/NewChecklistItemDialog.kt +++ b/app/src/main/kotlin/org/fossify/notes/dialogs/NewChecklistItemDialog.kt @@ -61,7 +61,7 @@ class NewChecklistItemDialog(val activity: Activity, callback: (titles: ArrayLis ItemAddChecklistBinding.inflate(activity.layoutInflater).apply { titleEditText.setOnEditorActionListener { _, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_NEXT || actionId == EditorInfo.IME_ACTION_DONE || actionId == KeyEvent.KEYCODE_ENTER) { - addNewEditText() + addNewEditText(position = titles.indexOf(titleEditText) + 1) true } else { false @@ -81,7 +81,7 @@ class NewChecklistItemDialog(val activity: Activity, callback: (titles: ArrayLis } } if (initialText != null) { - titleEditText.setText(initialText) + titleEditText.append(initialText) } if (position != null && position < titles.size) { titles.add(position, titleEditText)