Skip to content

Commit 92aedb7

Browse files
authored
feat(tasks): add option to uncheck all checked items (#184)
* feat(tasks): uncheck all checked items * docs(changelog): added new feature to CHANGELOG.md * docs(changelog): add issue link and adjust wording for the new feature * refactor: Use "uncheck all items" uniformly * docs(changelog): fix issue reference
1 parent c60ce47 commit 92aedb7

File tree

6 files changed

+23
-0
lines changed

6 files changed

+23
-0
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

77
## [Unreleased]
8+
### Added
9+
- Option to uncheck all checked items ([#156])
810

911
## [1.3.1] - 2025-07-12
1012
### Changed
@@ -61,6 +63,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6163
[#83]: https://github.com/FossifyOrg/Notes/issues/83
6264
[#99]: https://github.com/FossifyOrg/Notes/issues/99
6365
[#110]: https://github.com/FossifyOrg/Notes/issues/110
66+
[#156]: https://github.com/FossifyOrg/Notes/issues/156
6467
[#164]: https://github.com/FossifyOrg/Notes/issues/164
6568
[#178]: https://github.com/FossifyOrg/Notes/issues/178
6669

app/src/main/kotlin/org/fossify/notes/activities/MainActivity.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,7 @@ class MainActivity : SimpleActivity() {
269269
findItem(R.id.delete_note).isVisible = multipleNotesExist
270270
findItem(R.id.open_search).isVisible = !isCurrentItemChecklist
271271
findItem(R.id.remove_done_items).isVisible = isCurrentItemChecklist
272+
findItem(R.id.uncheck_all_items).isVisible = isCurrentItemChecklist
272273
findItem(R.id.sort_checklist).isVisible = isCurrentItemChecklist
273274
findItem(R.id.import_folder).isVisible = !isQPlus()
274275
findItem(R.id.lock_note).isVisible =
@@ -316,6 +317,7 @@ class MainActivity : SimpleActivity() {
316317
R.id.settings -> launchSettings()
317318
R.id.about -> launchAbout()
318319
R.id.remove_done_items -> fragment?.handleUnlocking { removeDoneItems() }
320+
R.id.uncheck_all_items -> fragment?.handleUnlocking { uncheckAllItems() }
319321
R.id.sort_checklist -> fragment?.handleUnlocking { displaySortChecklistDialog() }
320322
else -> return@setOnMenuItemClickListener false
321323
}
@@ -1555,6 +1557,10 @@ class MainActivity : SimpleActivity() {
15551557
getPagerAdapter().removeDoneCheckListItems(binding.viewPager.currentItem)
15561558
}
15571559

1560+
private fun uncheckAllItems() {
1561+
getPagerAdapter().uncheckAllItems(binding.viewPager.currentItem)
1562+
}
1563+
15581564
private fun displaySortChecklistDialog() {
15591565
SortChecklistDialog(this, mCurrentNote.id) {
15601566
getPagerAdapter().refreshChecklist(binding.viewPager.currentItem)

app/src/main/kotlin/org/fossify/notes/adapters/NotesPagerAdapter.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,10 @@ class NotesPagerAdapter(fm: FragmentManager, val notes: List<Note>, val activity
9696
(fragments[position] as? TasksFragment)?.removeCheckedItems()
9797
}
9898

99+
fun uncheckAllItems(position: Int) {
100+
(fragments[position] as? TasksFragment)?.uncheckAllItems()
101+
}
102+
99103
fun refreshChecklist(position: Int) {
100104
(fragments[position] as? TasksFragment)?.saveAndReload()
101105
}

app/src/main/kotlin/org/fossify/notes/fragments/TasksFragment.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,11 @@ class TasksFragment : NoteFragment(), TasksActionListener {
256256
setupAdapter()
257257
}
258258

259+
fun uncheckAllItems() {
260+
tasks = tasks.map { it.copy(isDone = false) }.toMutableList()
261+
saveAndReload()
262+
}
263+
259264
private fun updateUIVisibility() {
260265
binding.apply {
261266
fragmentPlaceholder.beVisibleIf(tasks.isEmpty())

app/src/main/res/menu/menu.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@
4040
android:id="@+id/remove_done_items"
4141
android:title="@string/delete_checked_items"
4242
app:showAsAction="never" />
43+
<item
44+
android:id="@+id/uncheck_all_items"
45+
android:title="@string/uncheck_all_items"
46+
app:showAsAction="never" />
4347
<item
4448
android:id="@+id/sort_checklist"
4549
android:icon="@drawable/ic_sort_vector"

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
<string name="add_new_checklist_items">Add new checklist items</string>
7272
<string name="checklist_is_empty">The checklist is empty</string>
7373
<string name="delete_checked_items">Delete checked items</string>
74+
<string name="uncheck_all_items">Uncheck all items</string>
7475
<string name="add_to_the_top">Add to the top</string>
7576
<string name="use_for_this_checklist">Use for this checklist only</string>
7677
<plurals name="num_checked_items">

0 commit comments

Comments
 (0)