Added initial code for the custom tle import from url

This commit is contained in:
Arty Bishop committed 2020-05-13 10:27:46 +01:00
1 parent 3b5c3a8bb3
commit d804c20bd0
7 files changed
+108 -24

No files matched your search

@@ -36,8 +36,8 @@ class DefaultRepository @Inject constructor(
private val remoteSource: RemoteSource
) : Repository {
override suspend fun updateEntriesFromFile(uri: Uri) {
resolver.openInputStream(uri)?.use {
override suspend fun updateEntriesFromFile(tleUri: Uri) {
resolver.openInputStream(tleUri)?.use {
withContext(Dispatchers.IO) {
val tleList = TLE.importSat(it)
val entries = tleList.map { SatEntry(it) }
@@ -6,7 +6,7 @@ import com.rtbishop.look4sat.data.Transmitter
interface Repository {
suspend fun updateEntriesFromFile(uri: Uri)
suspend fun updateEntriesFromFile(tleUri: Uri)
suspend fun updateEntriesFromUrl(tleUrl: String)
@@ -22,6 +22,7 @@ package com.rtbishop.look4sat.ui
import android.Manifest
import android.annotation.SuppressLint
import android.app.Activity
import android.app.AlertDialog
import android.content.Intent
import android.content.pm.ActivityInfo
import android.content.pm.PackageManager
@@ -33,6 +34,7 @@ import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.core.widget.addTextChangedListener
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
@@ -46,6 +48,7 @@ import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.dagger.ViewModelFactory
import com.rtbishop.look4sat.data.Result
import com.rtbishop.look4sat.databinding.ActivityMainBinding
import com.rtbishop.look4sat.databinding.DialogTleUrlBinding
import com.rtbishop.look4sat.databinding.DrawerHeaderBinding
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
@@ -162,7 +165,8 @@ class MainActivity : AppCompatActivity() {
it.lockButton()
}
drawerBinding.drawerBtnTleUrl.setOnClickListener {
viewModel.updateEntriesFromWeb()
showTleUrlDialog()
mainBinding.drawerLayout.closeDrawers()
it.lockButton()
}
drawerBinding.drawerBtnTrans.setOnClickListener {
@@ -177,6 +181,27 @@ class MainActivity : AppCompatActivity() {
drawerBinding.drawerBtnExit.setOnClickListener { finish() }
}
private fun showTleUrlDialog() {
var tleUrl = ""
val dialogBinding = DialogTleUrlBinding.inflate(layoutInflater).apply {
dialogTleInput.addTextChangedListener {
tleUrl = it.toString()
}
dialogTleNeg.setOnClickListener {
}
dialogTlePos.setOnClickListener {
}
}
AlertDialog.Builder(this).apply {
setView(dialogBinding.root)
create()
show()
}
}
private fun toast(message: String) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
}
@@ -98,10 +98,15 @@ class SharedViewModel @Inject constructor(
}
}
fun updateEntriesFromWeb() {
fun updateEntriesFromWeb(tleUrl: String? = null) {
viewModelScope.launch(Dispatchers.IO) {
try {
val url = prefsManager.getTleUrl()
val url = if (tleUrl.isNullOrEmpty()) {
prefsManager.getTleUrl()
} else {
prefsManager.setTleUrl(tleUrl)
tleUrl
}
val selected = repository.getSelectedEntries().map { it.catNum }
repository.updateEntriesFromUrl(url)
repository.updateEntriesSelection(selected)
@@ -139,9 +139,9 @@ class PassListFragment : Fragment(R.layout.fragment_pass_list) {
etHoursAhead.setText(hoursAhead.toString())
etMinEl.setText(minEl.toString())
val builder = AlertDialog.Builder(mainActivity)
builder.setTitle(getString(R.string.dialog_filter_passes))
.setPositiveButton(getString(R.string.btn_ok)) { _, _ ->
AlertDialog.Builder(mainActivity).apply {
setTitle(getString(R.string.dialog_filter_passes))
setPositiveButton(getString(R.string.btn_ok)) { _, _ ->
val hoursStr = etHoursAhead.text.toString()
val elevationStr = etMinEl.text.toString()
if (hoursStr.isNotEmpty() && elevationStr.isNotEmpty()) {
@@ -174,12 +174,13 @@ class PassListFragment : Fragment(R.layout.fragment_pass_list) {
).show()
}
.setNegativeButton(getString(R.string.btn_cancel)) { dialog, _ ->
setNegativeButton(getString(R.string.btn_cancel)) { dialog, _ ->
dialog.cancel()
}
.setView(satPassPrefView)
.create()
.show()
setView(satPassPrefView)
create()
show()
}
}
private fun showSelectSatDialog(