From 58fe352e300c60890d607e3450c685a9a47012b6 Mon Sep 17 00:00:00 2001 From: Arty Bishop Date: Sat, 26 Sep 2020 21:47:10 +0100 Subject: [PATCH] Restored SourcesDialog and FileDialog in EntriesFragment --- .../com/rtbishop/look4sat/ui/MainActivity.kt | 14 +++- .../look4sat/ui/fragments/EntriesFragment.kt | 64 +++++++++++-------- .../look4sat/ui/fragments/PassesFragment.kt | 25 +------- .../look4sat/ui/fragments/SourcesDialog.kt | 6 +- 4 files changed, 53 insertions(+), 56 deletions(-) diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt b/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt index 981a5a70..049c215f 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt @@ -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) } } \ No newline at end of file diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/EntriesFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/EntriesFragment.kt index 05add19e..9ca0b12d 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/EntriesFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/EntriesFragment.kt @@ -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) { -// 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) { + 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) + } } \ No newline at end of file diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PassesFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PassesFragment.kt index 40c69279..4d96e150 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PassesFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PassesFragment.kt @@ -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) { - val listener = object : EntriesDialog.EntriesSubmitListener { - override fun onEntriesSubmit(catNumList: MutableList) { - viewModel.updateEntriesSelection(catNumList) - } - } - - EntriesDialog(tleMainList).apply { - setEntriesListener(listener) - show(requireActivity().supportFragmentManager, "EntriesDialog") - } - } - private fun setTimer() { if (satPassList.isNotEmpty()) { resetTimer() diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/SourcesDialog.kt b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/SourcesDialog.kt index ab815df0..5414b307 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/SourcesDialog.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/SourcesDialog.kt @@ -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) : - AppCompatDialogFragment() { +class SourcesDialog(sources: List) : 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) : binding.tleSourceBtnAdd.setOnClickListener { val tempSources = sourcesAdapter.getSources() - tempSources.add(emptySource) + tempSources.add(TleSource("")) sourcesAdapter.setSources(tempSources) sourcesAdapter.notifyDataSetChanged() }