Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import androidx.recyclerview.widget.RecyclerView
import com.devpass.mynotes.R
import com.devpass.mynotes.databinding.FragmentNotesBinding
import com.devpass.mynotes.domain.model.Note
import com.devpass.mynotes.domain.util.Filter
import com.devpass.mynotes.presentation.adapter.NotesListAdapter
import com.google.android.material.snackbar.Snackbar
import dagger.hilt.android.AndroidEntryPoint
Expand All @@ -29,9 +30,16 @@ class NotesFragment : Fragment() {
private lateinit var layoutFilter: LinearLayout
private lateinit var btnFilter: ImageButton

private var selectedFilter: Filter = Filter.Title

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {

viewModel.observeCurrentList().observe(viewLifecycleOwner) {
adapter.submitList(it)

recyclerView.post {
recyclerView.scrollToPosition(0)
}
}

viewModel.deletedNote.observe(viewLifecycleOwner) {
Expand All @@ -53,7 +61,47 @@ class NotesFragment : Fragment() {
setupRecyclerView(binding)
setupHeader(binding)

viewModel.getNotes()
val pref = requireActivity().getSharedPreferences("filter", 0)
val editor = pref.edit()

binding.groupFilter.setOnCheckedChangeListener { radioGroup, _ ->

when (radioGroup.checkedRadioButtonId) {
R.id.sortByTitle -> {
selectedFilter = Filter.Title
viewModel.getNotes(selectedFilter)
editor.putInt("filter", 0)
}
R.id.sortByDate -> {
selectedFilter = Filter.Date
viewModel.getNotes(selectedFilter)
editor.putInt("filter", 1)
}
R.id.sortByColor -> {
selectedFilter = Filter.Color
viewModel.getNotes(selectedFilter)
editor.putInt("filter", 2)
}
}

editor.apply()
}

when(pref.getInt("filter", 0)){
0 -> {
binding.sortByTitle.isChecked = true
viewModel.getNotes(Filter.Title)
}
1 -> {
binding.sortByDate.isChecked = true
viewModel.getNotes(Filter.Date)
}
2 -> {
binding.sortByColor.isChecked = true
viewModel.getNotes(Filter.Color)
}
}

return binding.root
}

Expand All @@ -68,6 +116,7 @@ class NotesFragment : Fragment() {
adapter = NotesListAdapter(::onNoteClicked, ::onDeleteButtonClicked, requireContext())
recyclerView = binding.rvListNotes
recyclerView.adapter = adapter

recyclerView.layoutManager = LinearLayoutManager(requireContext())
}

Expand All @@ -90,11 +139,12 @@ class NotesFragment : Fragment() {
Snackbar.LENGTH_LONG
).setAction(R.string.message_undo_delete) {
viewModel.undoDelete()
viewModel.getNotes(selectedFilter)
}.show()
}

private fun onDeleteButtonClicked(noteDeleted: Note){
private fun onDeleteButtonClicked(noteDeleted: Note) {
viewModel.deleteNote(noteDeleted)
viewModel.getNotes()
viewModel.getNotes(selectedFilter)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import com.devpass.mynotes.domain.exceptions.InvalidNoteException
import com.devpass.mynotes.R
import com.devpass.mynotes.domain.model.Note
import com.devpass.mynotes.domain.usecase.NotesManagerUseCase
import com.devpass.mynotes.domain.util.Filter
import com.devpass.mynotes.domain.util.SelfCleaningLiveData
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.launchIn
Expand All @@ -27,10 +28,6 @@ class NotesViewModel @Inject constructor(

var deletedNote = SelfCleaningLiveData<Note?>()

init {
getNotes()
}

fun insertNote(note: Note) =
viewModelScope.launch {
try {
Expand All @@ -43,9 +40,9 @@ class NotesViewModel @Inject constructor(
fun onSnackBarShown() {
errorMessage.value = null
}
fun getNotes() =
fun getNotes(filter: Filter) =
manager
.getAll()
.getAll(filter)
.onEach { notes -> currentList.value = notes }
.launchIn(viewModelScope)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
app:layout_constraintTop_toBottomOf="@id/txt_header_note">

<RadioGroup
android:id="@+id/groupFilter"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
Expand Down Expand Up @@ -86,10 +87,10 @@
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/layoutFilter"
app:layout_constraintBottom_toBottomOf="parent"
tools:itemCount="20" />

</androidx.constraintlayout.widget.ConstraintLayout>