mirror of
https://github.com/atsunatsu/Look4Sat.git
synced 2026-10-08 13:37:25 +00:00
Navigating to SourcesDialog.kt using Jetpack Navigation
This commit is contained in:
1 parent
04fc4fd3aa
commit
7eb388f63a
5 files changed
+45
-38
No files matched your search
@@ -27,16 +27,19 @@ import androidx.recyclerview.widget.RecyclerView
|
|||||||
import com.rtbishop.look4sat.data.TleSource
|
import com.rtbishop.look4sat.data.TleSource
|
||||||
import com.rtbishop.look4sat.databinding.ItemTleSourceBinding
|
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>() {
|
RecyclerView.Adapter<SourcesAdapter.TleSourceHolder>() {
|
||||||
|
|
||||||
fun getSources(): MutableList<TleSource> {
|
fun addSource() {
|
||||||
return sources
|
val emptySource = TleSource()
|
||||||
|
if (!sources.contains(emptySource)) {
|
||||||
|
sources.add(emptySource)
|
||||||
|
notifyItemInserted(itemCount - 1)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setSources(list: MutableList<TleSource>) {
|
fun getSources(): List<TleSource> {
|
||||||
sources = list
|
return sources.filter { it.url != String() && it.url != " " && it.url.contains("https://") }
|
||||||
notifyDataSetChanged()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TleSourceHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TleSourceHolder {
|
||||||
@@ -53,7 +56,7 @@ class SourcesAdapter(private var sources: MutableList<TleSource>) :
|
|||||||
return sources.size
|
return sources.size
|
||||||
}
|
}
|
||||||
|
|
||||||
inner class TleSourceHolder(itemView: View, val binding: ItemTleSourceBinding) :
|
inner class TleSourceHolder(itemView: View, private val binding: ItemTleSourceBinding) :
|
||||||
RecyclerView.ViewHolder(itemView) {
|
RecyclerView.ViewHolder(itemView) {
|
||||||
|
|
||||||
fun bind(source: TleSource) {
|
fun bind(source: TleSource) {
|
||||||
|
|||||||
@@ -7,11 +7,11 @@ import androidx.appcompat.app.AppCompatActivity
|
|||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.activityViewModels
|
import androidx.fragment.app.activityViewModels
|
||||||
import androidx.navigation.findNavController
|
import androidx.navigation.findNavController
|
||||||
|
import androidx.navigation.fragment.findNavController
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import com.rtbishop.look4sat.R
|
import com.rtbishop.look4sat.R
|
||||||
import com.rtbishop.look4sat.SharedViewModel
|
import com.rtbishop.look4sat.SharedViewModel
|
||||||
import com.rtbishop.look4sat.data.SatEntry
|
import com.rtbishop.look4sat.data.SatEntry
|
||||||
import com.rtbishop.look4sat.data.TleSource
|
|
||||||
import com.rtbishop.look4sat.databinding.FragmentEntriesBinding
|
import com.rtbishop.look4sat.databinding.FragmentEntriesBinding
|
||||||
import com.rtbishop.look4sat.ui.adapters.EntriesAdapter
|
import com.rtbishop.look4sat.ui.adapters.EntriesAdapter
|
||||||
import com.rtbishop.look4sat.utility.RecyclerDivider
|
import com.rtbishop.look4sat.utility.RecyclerDivider
|
||||||
@@ -25,7 +25,6 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) {
|
|||||||
private lateinit var entriesAdapter: EntriesAdapter
|
private lateinit var entriesAdapter: EntriesAdapter
|
||||||
private val viewModel: SharedViewModel by activityViewModels()
|
private val viewModel: SharedViewModel by activityViewModels()
|
||||||
private val pickFileReqCode = 100
|
private val pickFileReqCode = 100
|
||||||
private var tleSources = listOf<TleSource>()
|
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
@@ -53,7 +52,6 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun setupObservers() {
|
private fun setupObservers() {
|
||||||
viewModel.getSources().observe(viewLifecycleOwner, { tleSources = it })
|
|
||||||
viewModel.getEntries().observe(viewLifecycleOwner, {
|
viewModel.getEntries().observe(viewLifecycleOwner, {
|
||||||
if (it.isNullOrEmpty()) setError()
|
if (it.isNullOrEmpty()) setError()
|
||||||
else {
|
else {
|
||||||
@@ -74,7 +72,7 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun showImportFromWebDialog() {
|
private fun showImportFromWebDialog() {
|
||||||
SourcesDialog(tleSources, viewModel).show(childFragmentManager, "SourcesDialog")
|
findNavController().navigate(R.id.nav_dialog_sources)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showImportFromFileDialog() {
|
private fun showImportFromFileDialog() {
|
||||||
|
|||||||
@@ -19,9 +19,12 @@
|
|||||||
|
|
||||||
package com.rtbishop.look4sat.ui.fragments
|
package com.rtbishop.look4sat.ui.fragments
|
||||||
|
|
||||||
import android.app.Dialog
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
import androidx.appcompat.app.AppCompatDialogFragment
|
import androidx.appcompat.app.AppCompatDialogFragment
|
||||||
|
import androidx.fragment.app.activityViewModels
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import com.rtbishop.look4sat.R
|
import com.rtbishop.look4sat.R
|
||||||
import com.rtbishop.look4sat.SharedViewModel
|
import com.rtbishop.look4sat.SharedViewModel
|
||||||
@@ -31,34 +34,32 @@ import com.rtbishop.look4sat.ui.adapters.SourcesAdapter
|
|||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class SourcesDialog(sources: List<TleSource>, private val viewModel: SharedViewModel) :
|
class SourcesDialog : AppCompatDialogFragment() {
|
||||||
AppCompatDialogFragment() {
|
|
||||||
|
|
||||||
private val sourcesAdapter = SourcesAdapter(sources as MutableList<TleSource>)
|
private val viewModel: SharedViewModel by activityViewModels()
|
||||||
|
|
||||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
override fun onCreateView(inflater: LayoutInflater, group: ViewGroup?, state: Bundle?): View? {
|
||||||
val binding = DialogSourcesBinding.inflate(requireActivity().layoutInflater).apply {
|
return inflater.inflate(R.layout.dialog_sources, group, false)
|
||||||
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() }
|
|
||||||
}
|
|
||||||
|
|
||||||
return Dialog(requireActivity()).apply {
|
override fun onViewCreated(view: View, state: Bundle?) {
|
||||||
setContentView(binding.root)
|
super.onViewCreated(view, state)
|
||||||
window?.setBackgroundDrawableResource(R.drawable.ic_launcher_background)
|
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:id="@+id/tleSourcesDialog"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@color/greyDark"
|
||||||
android:padding="4dp">
|
android:padding="4dp">
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
|
|||||||
@@ -77,5 +77,9 @@
|
|||||||
android:id="@+id/nav_info"
|
android:id="@+id/nav_info"
|
||||||
android:name="com.rtbishop.look4sat.ui.fragments.InfoFragment"
|
android:name="com.rtbishop.look4sat.ui.fragments.InfoFragment"
|
||||||
tools:layout="@layout/fragment_info" />
|
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>
|
</navigation>
|
||||||
Reference in new issue
Block a user