From 9cfa2cc4589fd2e4b6a9abbefbbaaa90ed1469c5 Mon Sep 17 00:00:00 2001 From: TopFox Date: Sat, 12 Jul 2025 22:41:20 +0200 Subject: [PATCH 1/5] feat(tasks): uncheck all checked items --- .../kotlin/org/fossify/notes/activities/MainActivity.kt | 6 ++++++ .../kotlin/org/fossify/notes/adapters/NotesPagerAdapter.kt | 4 ++++ .../kotlin/org/fossify/notes/fragments/TasksFragment.kt | 5 +++++ app/src/main/res/menu/menu.xml | 4 ++++ app/src/main/res/values/strings.xml | 1 + 5 files changed, 20 insertions(+) diff --git a/app/src/main/kotlin/org/fossify/notes/activities/MainActivity.kt b/app/src/main/kotlin/org/fossify/notes/activities/MainActivity.kt index 4b3a8ad8b..172af8b18 100644 --- a/app/src/main/kotlin/org/fossify/notes/activities/MainActivity.kt +++ b/app/src/main/kotlin/org/fossify/notes/activities/MainActivity.kt @@ -269,6 +269,7 @@ class MainActivity : SimpleActivity() { findItem(R.id.delete_note).isVisible = multipleNotesExist findItem(R.id.open_search).isVisible = !isCurrentItemChecklist findItem(R.id.remove_done_items).isVisible = isCurrentItemChecklist + findItem(R.id.uncheck_done_items).isVisible = isCurrentItemChecklist findItem(R.id.sort_checklist).isVisible = isCurrentItemChecklist findItem(R.id.import_folder).isVisible = !isQPlus() findItem(R.id.lock_note).isVisible = @@ -316,6 +317,7 @@ class MainActivity : SimpleActivity() { R.id.settings -> launchSettings() R.id.about -> launchAbout() R.id.remove_done_items -> fragment?.handleUnlocking { removeDoneItems() } + R.id.uncheck_done_items -> fragment?.handleUnlocking { uncheckDoneItems() } R.id.sort_checklist -> fragment?.handleUnlocking { displaySortChecklistDialog() } else -> return@setOnMenuItemClickListener false } @@ -1555,6 +1557,10 @@ class MainActivity : SimpleActivity() { getPagerAdapter().removeDoneCheckListItems(binding.viewPager.currentItem) } + private fun uncheckDoneItems() { + getPagerAdapter().uncheckCheckedItems(binding.viewPager.currentItem) + } + private fun displaySortChecklistDialog() { SortChecklistDialog(this, mCurrentNote.id) { getPagerAdapter().refreshChecklist(binding.viewPager.currentItem) diff --git a/app/src/main/kotlin/org/fossify/notes/adapters/NotesPagerAdapter.kt b/app/src/main/kotlin/org/fossify/notes/adapters/NotesPagerAdapter.kt index 5e247c5ee..584ff95b2 100644 --- a/app/src/main/kotlin/org/fossify/notes/adapters/NotesPagerAdapter.kt +++ b/app/src/main/kotlin/org/fossify/notes/adapters/NotesPagerAdapter.kt @@ -96,6 +96,10 @@ class NotesPagerAdapter(fm: FragmentManager, val notes: List, val activity (fragments[position] as? TasksFragment)?.removeCheckedItems() } + fun uncheckCheckedItems(position: Int) { + (fragments[position] as? TasksFragment)?.uncheckCheckedItems() + } + fun refreshChecklist(position: Int) { (fragments[position] as? TasksFragment)?.saveAndReload() } diff --git a/app/src/main/kotlin/org/fossify/notes/fragments/TasksFragment.kt b/app/src/main/kotlin/org/fossify/notes/fragments/TasksFragment.kt index 5d14c8e68..142a3ffd9 100644 --- a/app/src/main/kotlin/org/fossify/notes/fragments/TasksFragment.kt +++ b/app/src/main/kotlin/org/fossify/notes/fragments/TasksFragment.kt @@ -256,6 +256,11 @@ class TasksFragment : NoteFragment(), TasksActionListener { setupAdapter() } + fun uncheckCheckedItems() { + tasks = tasks.map { it.copy(isDone = false) }.toMutableList() + saveAndReload() + } + private fun updateUIVisibility() { binding.apply { fragmentPlaceholder.beVisibleIf(tasks.isEmpty()) diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml index b9b161f30..aaaccb9fa 100644 --- a/app/src/main/res/menu/menu.xml +++ b/app/src/main/res/menu/menu.xml @@ -40,6 +40,10 @@ android:id="@+id/remove_done_items" android:title="@string/delete_checked_items" app:showAsAction="never" /> + Add new checklist items The checklist is empty Delete checked items + Uncheck checked items Add to the top Use for this checklist only From 01001d40e1e63bf191cc42a1b32ea9a3739dffcd Mon Sep 17 00:00:00 2001 From: TopFox Date: Sat, 12 Jul 2025 22:46:57 +0200 Subject: [PATCH 2/5] docs(changelog): added new feature to CHANGELOG.md --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f889b88e..3fea5a24d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Added +- Uncheck all checked items ([#156]) ## [1.3.1] - 2025-07-12 ### Changed From de871841fcfe34acec80bd0bd406e8c105c07787 Mon Sep 17 00:00:00 2001 From: TopFox Date: Sun, 13 Jul 2025 10:51:50 +0200 Subject: [PATCH 3/5] docs(changelog): add issue link and adjust wording for the new feature --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fea5a24d..5dd8febfc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Added -- Uncheck all checked items ([#156]) +- Option to uncheck all checked items ([#156]: https://github.com/FossifyOrg/Notes/issues/156) ## [1.3.1] - 2025-07-12 ### Changed From d10ae7bdb19827971c6968dfef50f5e83651e563 Mon Sep 17 00:00:00 2001 From: TopFox Date: Sun, 13 Jul 2025 10:57:22 +0200 Subject: [PATCH 4/5] refactor: Use "uncheck all items" uniformly --- .../kotlin/org/fossify/notes/activities/MainActivity.kt | 8 ++++---- .../org/fossify/notes/adapters/NotesPagerAdapter.kt | 4 ++-- .../kotlin/org/fossify/notes/fragments/TasksFragment.kt | 2 +- app/src/main/res/menu/menu.xml | 4 ++-- app/src/main/res/values/strings.xml | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/src/main/kotlin/org/fossify/notes/activities/MainActivity.kt b/app/src/main/kotlin/org/fossify/notes/activities/MainActivity.kt index 172af8b18..fc936b845 100644 --- a/app/src/main/kotlin/org/fossify/notes/activities/MainActivity.kt +++ b/app/src/main/kotlin/org/fossify/notes/activities/MainActivity.kt @@ -269,7 +269,7 @@ class MainActivity : SimpleActivity() { findItem(R.id.delete_note).isVisible = multipleNotesExist findItem(R.id.open_search).isVisible = !isCurrentItemChecklist findItem(R.id.remove_done_items).isVisible = isCurrentItemChecklist - findItem(R.id.uncheck_done_items).isVisible = isCurrentItemChecklist + findItem(R.id.uncheck_all_items).isVisible = isCurrentItemChecklist findItem(R.id.sort_checklist).isVisible = isCurrentItemChecklist findItem(R.id.import_folder).isVisible = !isQPlus() findItem(R.id.lock_note).isVisible = @@ -317,7 +317,7 @@ class MainActivity : SimpleActivity() { R.id.settings -> launchSettings() R.id.about -> launchAbout() R.id.remove_done_items -> fragment?.handleUnlocking { removeDoneItems() } - R.id.uncheck_done_items -> fragment?.handleUnlocking { uncheckDoneItems() } + R.id.uncheck_all_items -> fragment?.handleUnlocking { uncheckAllItems() } R.id.sort_checklist -> fragment?.handleUnlocking { displaySortChecklistDialog() } else -> return@setOnMenuItemClickListener false } @@ -1557,8 +1557,8 @@ class MainActivity : SimpleActivity() { getPagerAdapter().removeDoneCheckListItems(binding.viewPager.currentItem) } - private fun uncheckDoneItems() { - getPagerAdapter().uncheckCheckedItems(binding.viewPager.currentItem) + private fun uncheckAllItems() { + getPagerAdapter().uncheckAllItems(binding.viewPager.currentItem) } private fun displaySortChecklistDialog() { diff --git a/app/src/main/kotlin/org/fossify/notes/adapters/NotesPagerAdapter.kt b/app/src/main/kotlin/org/fossify/notes/adapters/NotesPagerAdapter.kt index 584ff95b2..12646219e 100644 --- a/app/src/main/kotlin/org/fossify/notes/adapters/NotesPagerAdapter.kt +++ b/app/src/main/kotlin/org/fossify/notes/adapters/NotesPagerAdapter.kt @@ -96,8 +96,8 @@ class NotesPagerAdapter(fm: FragmentManager, val notes: List, val activity (fragments[position] as? TasksFragment)?.removeCheckedItems() } - fun uncheckCheckedItems(position: Int) { - (fragments[position] as? TasksFragment)?.uncheckCheckedItems() + fun uncheckAllItems(position: Int) { + (fragments[position] as? TasksFragment)?.uncheckAllItems() } fun refreshChecklist(position: Int) { diff --git a/app/src/main/kotlin/org/fossify/notes/fragments/TasksFragment.kt b/app/src/main/kotlin/org/fossify/notes/fragments/TasksFragment.kt index 142a3ffd9..11117e10d 100644 --- a/app/src/main/kotlin/org/fossify/notes/fragments/TasksFragment.kt +++ b/app/src/main/kotlin/org/fossify/notes/fragments/TasksFragment.kt @@ -256,7 +256,7 @@ class TasksFragment : NoteFragment(), TasksActionListener { setupAdapter() } - fun uncheckCheckedItems() { + fun uncheckAllItems() { tasks = tasks.map { it.copy(isDone = false) }.toMutableList() saveAndReload() } diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml index aaaccb9fa..3e0266844 100644 --- a/app/src/main/res/menu/menu.xml +++ b/app/src/main/res/menu/menu.xml @@ -41,8 +41,8 @@ android:title="@string/delete_checked_items" app:showAsAction="never" /> Add new checklist items The checklist is empty Delete checked items - Uncheck checked items + Uncheck all items Add to the top Use for this checklist only From 903338cc8090f657f9a113da8a94b29ea53c8541 Mon Sep 17 00:00:00 2001 From: TopFox Date: Sun, 13 Jul 2025 11:24:54 +0200 Subject: [PATCH 5/5] docs(changelog): fix issue reference --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5dd8febfc..a1082f36b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Added -- Option to uncheck all checked items ([#156]: https://github.com/FossifyOrg/Notes/issues/156) +- Option to uncheck all checked items ([#156]) ## [1.3.1] - 2025-07-12 ### Changed @@ -63,6 +63,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 [#83]: https://github.com/FossifyOrg/Notes/issues/83 [#99]: https://github.com/FossifyOrg/Notes/issues/99 [#110]: https://github.com/FossifyOrg/Notes/issues/110 +[#156]: https://github.com/FossifyOrg/Notes/issues/156 [#164]: https://github.com/FossifyOrg/Notes/issues/164 [#178]: https://github.com/FossifyOrg/Notes/issues/178