Restored SourcesDialog and FileDialog in EntriesFragment

This commit is contained in:
Arty Bishop committed 2020-10-06 23:24:16 +01:00
1 parent 41cf2f3a5d
commit 58fe352e30
4 files changed
+53 -56

No files matched your search

@@ -2,18 +2,30 @@ package com.rtbishop.look4sat.ui
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.ui.setupWithNavController
import com.rtbishop.look4sat.Look4SatApp
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.dagger.ViewModelFactory
import com.rtbishop.look4sat.databinding.ActivityMainBinding
import javax.inject.Inject
class MainActivity : AppCompatActivity() {
@Inject
lateinit var factory: ViewModelFactory
private lateinit var binding: ActivityMainBinding
private lateinit var viewModel: SharedViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding = ActivityMainBinding.inflate(layoutInflater)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
val navHost = supportFragmentManager.findFragmentById(R.id.nav_frag) as NavHostFragment
binding.navBottom.setupWithNavController(navHost.navController)
(application as Look4SatApp).appComponent.inject(this)
viewModel = ViewModelProvider(this, factory).get(SharedViewModel::class.java)
}
}
@@ -1,51 +1,61 @@
package com.rtbishop.look4sat.ui.fragments
import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import com.rtbishop.look4sat.Look4SatApp
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.dagger.ViewModelFactory
import com.rtbishop.look4sat.data.TleSource
import com.rtbishop.look4sat.databinding.FragmentEntriesBinding
import com.rtbishop.look4sat.ui.SharedViewModel
import javax.inject.Inject
class EntriesFragment : Fragment(R.layout.fragment_entries) {
class EntriesFragment : Fragment(R.layout.fragment_entries), SourcesDialog.SourcesSubmitListener {
@Inject
lateinit var modelFactory: ViewModelFactory
lateinit var factory: ViewModelFactory
private lateinit var binding: FragmentEntriesBinding
private lateinit var viewModel: SharedViewModel
private val pickFileReqCode = 100
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding = FragmentEntriesBinding.bind(view)
(requireActivity().application as Look4SatApp).appComponent.inject(this)
viewModel = ViewModelProvider(requireActivity(), factory).get(SharedViewModel::class.java)
binding.importWeb.setOnClickListener { showSourcesDialog() }
binding.importFile.setOnClickListener { showFileDialog() }
}
// private fun openSourcesDialog() {
// SourcesDialog(viewModel.getTleSources()).apply {
// setSourcesListener(this@MainActivity)
// show(supportFragmentManager, "TleSourcesDialog")
// }
// }
private fun showSourcesDialog() {
val fragmentManager = childFragmentManager
SourcesDialog(viewModel.getTleSources()).apply {
setSourcesListener(this@EntriesFragment)
show(fragmentManager, "TleSourcesDialog")
}
}
// override fun onSourcesSubmit(list: List<TleSource>) {
// viewModel.updateSatData(list)
// }
private fun showFileDialog() {
Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
addCategory(Intent.CATEGORY_OPENABLE)
type = "*/*"
startActivityForResult(this, pickFileReqCode)
}
}
// override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
// if (requestCode == pickFileReqCode && resultCode == AppCompatActivity.RESULT_OK) {
// data?.data?.also { uri ->
// viewModel.updateEntriesFromFile(uri)
// }
// } else {
// super.onActivityResult(requestCode, resultCode, data)
// }
// }
override fun onSourcesSubmit(list: List<TleSource>) {
viewModel.updateSatData(list)
}
// private fun openFile() {
// val openFileIntent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
// addCategory(Intent.CATEGORY_OPENABLE)
// type = "*/*"
// }
// startActivityForResult(openFileIntent, pickFileReqCode)
// }
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == pickFileReqCode && resultCode == AppCompatActivity.RESULT_OK) {
data?.data?.also { uri -> viewModel.updateEntriesFromFile(uri) }
} else super.onActivityResult(requestCode, resultCode, data)
}
}
@@ -26,14 +26,12 @@ import android.widget.EditText
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.SimpleItemAnimator
import com.rtbishop.look4sat.Look4SatApp
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.dagger.ViewModelFactory
import com.rtbishop.look4sat.data.Result
import com.rtbishop.look4sat.data.SatEntry
import com.rtbishop.look4sat.data.SatPass
import com.rtbishop.look4sat.databinding.FragmentPassesBinding
import com.rtbishop.look4sat.ui.SharedViewModel
@@ -41,7 +39,6 @@ import com.rtbishop.look4sat.ui.adapters.PassesAdapter
import com.rtbishop.look4sat.utility.PrefsManager
import com.rtbishop.look4sat.utility.Utilities
import com.rtbishop.look4sat.utility.Utilities.snack
import kotlinx.coroutines.launch
import java.util.*
import javax.inject.Inject
@@ -105,14 +102,7 @@ class PassesFragment : Fragment(R.layout.fragment_passes) {
showSatPassPrefsDialog(viewModel.getHoursAhead(), viewModel.getMinElevation())
}
binding.passesFab.setOnClickListener {
lifecycleScope.launch {
val list = viewModel.getAllEntries() as MutableList
if (list.isEmpty()) {
getString(R.string.err_update_data).snack(requireView())
} else {
showSelectSatDialog(list)
}
}
viewModel.calculatePasses()
}
}
@@ -154,19 +144,6 @@ class PassesFragment : Fragment(R.layout.fragment_passes) {
}
}
private fun showSelectSatDialog(tleMainList: MutableList<SatEntry>) {
val listener = object : EntriesDialog.EntriesSubmitListener {
override fun onEntriesSubmit(catNumList: MutableList<Int>) {
viewModel.updateEntriesSelection(catNumList)
}
}
EntriesDialog(tleMainList).apply {
setEntriesListener(listener)
show(requireActivity().supportFragmentManager, "EntriesDialog")
}
}
private fun setTimer() {
if (satPassList.isNotEmpty()) {
resetTimer()
@@ -29,11 +29,9 @@ import com.rtbishop.look4sat.data.TleSource
import com.rtbishop.look4sat.databinding.DialogSourcesBinding
import com.rtbishop.look4sat.ui.adapters.SourcesAdapter
class SourcesDialog(sources: List<TleSource>) :
AppCompatDialogFragment() {
class SourcesDialog(sources: List<TleSource>) : AppCompatDialogFragment() {
private lateinit var sourcesListener: SourcesSubmitListener
private val emptySource = TleSource("")
private val sourcesAdapter = SourcesAdapter(sources.toMutableList())
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
@@ -54,7 +52,7 @@ class SourcesDialog(sources: List<TleSource>) :
binding.tleSourceBtnAdd.setOnClickListener {
val tempSources = sourcesAdapter.getSources()
tempSources.add(emptySource)
tempSources.add(TleSource(""))
sourcesAdapter.setSources(tempSources)
sourcesAdapter.notifyDataSetChanged()
}