diff --git a/app/src/main/java/com/rtbishop/look4sat/repo/DefaultRepository.kt b/app/src/main/java/com/rtbishop/look4sat/repo/DefaultRepository.kt
index 26fbf113..60007e11 100644
--- a/app/src/main/java/com/rtbishop/look4sat/repo/DefaultRepository.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/repo/DefaultRepository.kt
@@ -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) }
diff --git a/app/src/main/java/com/rtbishop/look4sat/repo/Repository.kt b/app/src/main/java/com/rtbishop/look4sat/repo/Repository.kt
index 58a431eb..81c68b37 100644
--- a/app/src/main/java/com/rtbishop/look4sat/repo/Repository.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/repo/Repository.kt
@@ -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)
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 c6bc2781..e12c3838 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt
@@ -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()
}
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt
index 2c02d9af..1ccbc01e 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt
@@ -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)
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PassListFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PassListFragment.kt
index e941ac0b..dc88ca3a 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PassListFragment.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PassListFragment.kt
@@ -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(
diff --git a/app/src/main/res/layout/dialog_sat_entry.xml b/app/src/main/res/layout/dialog_sat_entry.xml
index 081f50da..c1737a8d 100644
--- a/app/src/main/res/layout/dialog_sat_entry.xml
+++ b/app/src/main/res/layout/dialog_sat_entry.xml
@@ -29,10 +29,10 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
- android:layout_marginTop="4dp"
+ android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:text="@string/dialog_select_sat"
- android:textSize="21sp"
+ android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
@@ -42,8 +42,9 @@
android:id="@+id/dialog_search"
android:layout_width="0dp"
android:layout_height="wrap_content"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
+ android:layout_marginTop="4dp"
+ app:layout_constraintEnd_toEndOf="@+id/dialog_title"
+ app:layout_constraintStart_toStartOf="@+id/dialog_title"
app:layout_constraintTop_toBottomOf="@+id/dialog_title" />
+ app:layout_constraintBaseline_toBaselineOf="@+id/dialog_btn_negative"
+ app:layout_constraintStart_toStartOf="@+id/dialog_recycler" />
+ app:layout_constraintEnd_toEndOf="@+id/dialog_recycler" />
diff --git a/app/src/main/res/layout/dialog_tle_url.xml b/app/src/main/res/layout/dialog_tle_url.xml
new file mode 100644
index 00000000..98a768a8
--- /dev/null
+++ b/app/src/main/res/layout/dialog_tle_url.xml
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file