From 1d90b76d325e465d64e4153a8f14af243e98914b Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 8 Dec 2018 23:34:53 +0100 Subject: [PATCH] handle deleting checklist items --- .../notes/pro/adapters/ChecklistAdapter.kt | 42 +++++++++++++++++-- .../notes/pro/fragments/ChecklistFragment.kt | 12 ++++-- .../pro/interfaces/ChecklistItemsListener.kt | 7 ++++ .../main/res/layout/fragment_checklist.xml | 2 +- 4 files changed, 55 insertions(+), 8 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/notes/pro/interfaces/ChecklistItemsListener.kt diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/ChecklistAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/ChecklistAdapter.kt index 5d80ea19..cfed72e1 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/ChecklistAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/ChecklistAdapter.kt @@ -8,14 +8,14 @@ import android.view.ViewGroup import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor -import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener import com.simplemobiletools.commons.views.MyRecyclerView import com.simplemobiletools.notes.pro.R +import com.simplemobiletools.notes.pro.interfaces.ChecklistItemsListener import com.simplemobiletools.notes.pro.models.ChecklistItem import kotlinx.android.synthetic.main.item_checklist.view.* import java.util.* -class ChecklistAdapter(activity: BaseSimpleActivity, var items: ArrayList, val listener: RefreshRecyclerViewListener?, +class ChecklistAdapter(activity: BaseSimpleActivity, var items: ArrayList, val listener: ChecklistItemsListener?, recyclerView: MyRecyclerView, itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, null, itemClick) { private lateinit var crossDrawable: Drawable @@ -28,7 +28,15 @@ class ChecklistAdapter(activity: BaseSimpleActivity, var items: ArrayList deleteSelection() + } + } override fun getSelectableItemCount() = items.size @@ -58,6 +66,34 @@ class ChecklistAdapter(activity: BaseSimpleActivity, var items: ArrayList(selectedKeys.size) + val positions = ArrayList() + selectedKeys.forEach { + val key = it + val position = items.indexOfFirst { it.id == key } + if (position != -1) { + positions.add(position) + + val favorite = getItemWithKey(key) + if (favorite != null) { + removeItems.add(favorite) + } + } + } + + positions.sortDescending() + removeSelectedItems(positions) + + items.removeAll(removeItems) + listener?.saveChecklist() + if (items.isEmpty()) { + listener?.refreshItems() + } + } + + private fun getItemWithKey(key: Int): ChecklistItem? = items.firstOrNull { it.id == key } + private fun setupView(view: View, checklistItem: ChecklistItem) { val isSelected = selectedKeys.contains(checklistItem.id) view.apply { diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/fragments/ChecklistFragment.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/fragments/ChecklistFragment.kt index de82569f..d27c5ca0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/fragments/ChecklistFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/fragments/ChecklistFragment.kt @@ -8,7 +8,6 @@ import android.view.ViewGroup import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.simplemobiletools.commons.extensions.* -import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener import com.simplemobiletools.notes.pro.R import com.simplemobiletools.notes.pro.activities.SimpleActivity import com.simplemobiletools.notes.pro.adapters.ChecklistAdapter @@ -16,11 +15,12 @@ import com.simplemobiletools.notes.pro.dialogs.NewChecklistItemDialog import com.simplemobiletools.notes.pro.extensions.notesDB import com.simplemobiletools.notes.pro.helpers.NOTE_ID import com.simplemobiletools.notes.pro.helpers.NotesHelper +import com.simplemobiletools.notes.pro.interfaces.ChecklistItemsListener import com.simplemobiletools.notes.pro.models.ChecklistItem import com.simplemobiletools.notes.pro.models.Note import kotlinx.android.synthetic.main.fragment_checklist.view.* -class ChecklistFragment : NoteFragment(), RefreshRecyclerViewListener { +class ChecklistFragment : NoteFragment(), ChecklistItemsListener { private var noteId = 0L private var note: Note? = null private var items = ArrayList() @@ -64,7 +64,7 @@ class ChecklistFragment : NoteFragment(), RefreshRecyclerViewListener { val currentMaxId = items.maxBy { it.id }?.id ?: 0 val checklistItem = ChecklistItem(currentMaxId + 1, it, false) items.add(checklistItem) - saveNote(-1) + saveNote() } } } @@ -81,7 +81,7 @@ class ChecklistFragment : NoteFragment(), RefreshRecyclerViewListener { } } - private fun saveNote(refreshIndex: Int) { + private fun saveNote(refreshIndex: Int = -1) { Thread { if (note != null && context != null) { if (refreshIndex != -1) { @@ -96,6 +96,10 @@ class ChecklistFragment : NoteFragment(), RefreshRecyclerViewListener { }.start() } + override fun saveChecklist() { + saveNote() + } + override fun refreshItems() { } } diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/interfaces/ChecklistItemsListener.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/interfaces/ChecklistItemsListener.kt new file mode 100644 index 00000000..04667b6b --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/interfaces/ChecklistItemsListener.kt @@ -0,0 +1,7 @@ +package com.simplemobiletools.notes.pro.interfaces + +interface ChecklistItemsListener { + fun refreshItems() + + fun saveChecklist() +} diff --git a/app/src/main/res/layout/fragment_checklist.xml b/app/src/main/res/layout/fragment_checklist.xml index 9438d221..d7103778 100644 --- a/app/src/main/res/layout/fragment_checklist.xml +++ b/app/src/main/res/layout/fragment_checklist.xml @@ -9,7 +9,7 @@