kopia lustrzana https://github.com/rt-bishop/Look4Sat
Navigating to SourcesDialog.kt using Jetpack Navigation
rodzic
04fc4fd3aa
commit
7eb388f63a
|
@ -27,16 +27,19 @@ import androidx.recyclerview.widget.RecyclerView
|
|||
import com.rtbishop.look4sat.data.TleSource
|
||||
import com.rtbishop.look4sat.databinding.ItemTleSourceBinding
|
||||
|
||||
class SourcesAdapter(private var sources: MutableList<TleSource>) :
|
||||
class SourcesAdapter(private var sources: MutableList<TleSource> = mutableListOf()) :
|
||||
RecyclerView.Adapter<SourcesAdapter.TleSourceHolder>() {
|
||||
|
||||
fun getSources(): MutableList<TleSource> {
|
||||
return sources
|
||||
fun addSource() {
|
||||
val emptySource = TleSource()
|
||||
if (!sources.contains(emptySource)) {
|
||||
sources.add(emptySource)
|
||||
notifyItemInserted(itemCount - 1)
|
||||
}
|
||||
}
|
||||
|
||||
fun setSources(list: MutableList<TleSource>) {
|
||||
sources = list
|
||||
notifyDataSetChanged()
|
||||
fun getSources(): List<TleSource> {
|
||||
return sources.filter { it.url != String() && it.url != " " && it.url.contains("https://") }
|
||||
}
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TleSourceHolder {
|
||||
|
@ -53,7 +56,7 @@ class SourcesAdapter(private var sources: MutableList<TleSource>) :
|
|||
return sources.size
|
||||
}
|
||||
|
||||
inner class TleSourceHolder(itemView: View, val binding: ItemTleSourceBinding) :
|
||||
inner class TleSourceHolder(itemView: View, private val binding: ItemTleSourceBinding) :
|
||||
RecyclerView.ViewHolder(itemView) {
|
||||
|
||||
fun bind(source: TleSource) {
|
||||
|
|
|
@ -7,11 +7,11 @@ import androidx.appcompat.app.AppCompatActivity
|
|||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.navigation.findNavController
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.SharedViewModel
|
||||
import com.rtbishop.look4sat.data.SatEntry
|
||||
import com.rtbishop.look4sat.data.TleSource
|
||||
import com.rtbishop.look4sat.databinding.FragmentEntriesBinding
|
||||
import com.rtbishop.look4sat.ui.adapters.EntriesAdapter
|
||||
import com.rtbishop.look4sat.utility.RecyclerDivider
|
||||
|
@ -25,7 +25,6 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) {
|
|||
private lateinit var entriesAdapter: EntriesAdapter
|
||||
private val viewModel: SharedViewModel by activityViewModels()
|
||||
private val pickFileReqCode = 100
|
||||
private var tleSources = listOf<TleSource>()
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
@ -53,7 +52,6 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) {
|
|||
}
|
||||
|
||||
private fun setupObservers() {
|
||||
viewModel.getSources().observe(viewLifecycleOwner, { tleSources = it })
|
||||
viewModel.getEntries().observe(viewLifecycleOwner, {
|
||||
if (it.isNullOrEmpty()) setError()
|
||||
else {
|
||||
|
@ -74,7 +72,7 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) {
|
|||
}
|
||||
|
||||
private fun showImportFromWebDialog() {
|
||||
SourcesDialog(tleSources, viewModel).show(childFragmentManager, "SourcesDialog")
|
||||
findNavController().navigate(R.id.nav_dialog_sources)
|
||||
}
|
||||
|
||||
private fun showImportFromFileDialog() {
|
||||
|
|
|
@ -19,9 +19,12 @@
|
|||
|
||||
package com.rtbishop.look4sat.ui.fragments
|
||||
|
||||
import android.app.Dialog
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.app.AppCompatDialogFragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.SharedViewModel
|
||||
|
@ -31,34 +34,32 @@ import com.rtbishop.look4sat.ui.adapters.SourcesAdapter
|
|||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@AndroidEntryPoint
|
||||
class SourcesDialog(sources: List<TleSource>, private val viewModel: SharedViewModel) :
|
||||
AppCompatDialogFragment() {
|
||||
class SourcesDialog : AppCompatDialogFragment() {
|
||||
|
||||
private val sourcesAdapter = SourcesAdapter(sources as MutableList<TleSource>)
|
||||
private val viewModel: SharedViewModel by activityViewModels()
|
||||
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
val binding = DialogSourcesBinding.inflate(requireActivity().layoutInflater).apply {
|
||||
tleSourcesRecycler.apply {
|
||||
adapter = sourcesAdapter
|
||||
layoutManager = LinearLayoutManager(requireContext())
|
||||
}
|
||||
tleSourceBtnAdd.setOnClickListener {
|
||||
val tempSources = sourcesAdapter.getSources()
|
||||
tempSources.add(TleSource(String()))
|
||||
sourcesAdapter.setSources(tempSources)
|
||||
}
|
||||
tleSourcesBtnPos.setOnClickListener {
|
||||
val filteredSources = sourcesAdapter.getSources()
|
||||
.filter { it.url != String() && it.url != " " && it.url.contains("https://") }
|
||||
viewModel.updateEntriesFromSources(filteredSources)
|
||||
dismiss()
|
||||
}
|
||||
tleSourcesBtnNeg.setOnClickListener { dismiss() }
|
||||
}
|
||||
override fun onCreateView(inflater: LayoutInflater, group: ViewGroup?, state: Bundle?): View? {
|
||||
return inflater.inflate(R.layout.dialog_sources, group, false)
|
||||
}
|
||||
|
||||
return Dialog(requireActivity()).apply {
|
||||
setContentView(binding.root)
|
||||
window?.setBackgroundDrawableResource(R.drawable.ic_launcher_background)
|
||||
}
|
||||
override fun onViewCreated(view: View, state: Bundle?) {
|
||||
super.onViewCreated(view, state)
|
||||
viewModel.getSources().observe(viewLifecycleOwner, { sources ->
|
||||
val sourcesAdapter = SourcesAdapter(sources as MutableList<TleSource>)
|
||||
DialogSourcesBinding.bind(view).apply {
|
||||
tleSourcesRecycler.apply {
|
||||
adapter = sourcesAdapter
|
||||
layoutManager = LinearLayoutManager(requireContext())
|
||||
}
|
||||
tleSourceBtnAdd.setOnClickListener {
|
||||
sourcesAdapter.addSource()
|
||||
}
|
||||
tleSourcesBtnPos.setOnClickListener {
|
||||
viewModel.updateEntriesFromSources(sourcesAdapter.getSources())
|
||||
dismiss()
|
||||
}
|
||||
tleSourcesBtnNeg.setOnClickListener { dismiss() }
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
|
@ -4,6 +4,7 @@
|
|||
android:id="@+id/tleSourcesDialog"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/greyDark"
|
||||
android:padding="4dp">
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
|
|
|
@ -77,5 +77,9 @@
|
|||
android:id="@+id/nav_info"
|
||||
android:name="com.rtbishop.look4sat.ui.fragments.InfoFragment"
|
||||
tools:layout="@layout/fragment_info" />
|
||||
<dialog
|
||||
android:id="@+id/nav_dialog_sources"
|
||||
android:name="com.rtbishop.look4sat.ui.fragments.SourcesDialog"
|
||||
tools:layout="@layout/dialog_sources" />
|
||||
|
||||
</navigation>
|
||||
|
|
Ładowanie…
Reference in New Issue