From cc538473747bb3e76ffaa4422355817b6bc0b9ea Mon Sep 17 00:00:00 2001 From: Arty Bishop Date: Sat, 23 Nov 2019 19:55:11 +0000 Subject: [PATCH] Toolbar timer is now being set for the next satellite pass --- .../com/rtbishop/lookingsat/MainViewModel.kt | 2 +- .../com/rtbishop/lookingsat/ui/SkyFragment.kt | 60 +++++++++++-------- 2 files changed, 37 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/com/rtbishop/lookingsat/MainViewModel.kt b/app/src/main/java/com/rtbishop/lookingsat/MainViewModel.kt index 696e206f..a6eaf84b 100644 --- a/app/src/main/java/com/rtbishop/lookingsat/MainViewModel.kt +++ b/app/src/main/java/com/rtbishop/lookingsat/MainViewModel.kt @@ -77,7 +77,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { try { Log.d(tag, "Trying ${tle.name}") val passPredictor = PassPredictor(tle, gsp.value) - val passes = passPredictor.getPasses(Date(), 6, true) + val passes = passPredictor.getPasses(Date(), 6, false) for (pass in passes) { Log.d(tag, "Trying ${pass.maxEl}") satPassList.add(SatPass(tle.name, tle.catnum, pass)) diff --git a/app/src/main/java/com/rtbishop/lookingsat/ui/SkyFragment.kt b/app/src/main/java/com/rtbishop/lookingsat/ui/SkyFragment.kt index fb193e54..0b0bf873 100644 --- a/app/src/main/java/com/rtbishop/lookingsat/ui/SkyFragment.kt +++ b/app/src/main/java/com/rtbishop/lookingsat/ui/SkyFragment.kt @@ -22,7 +22,6 @@ import com.rtbishop.lookingsat.R import com.rtbishop.lookingsat.repo.SatPass import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import java.util.* import java.util.concurrent.TimeUnit class SkyFragment : Fragment() { @@ -37,7 +36,7 @@ class SkyFragment : Fragment() { private lateinit var progressBar: ProgressBar private lateinit var fab: FloatingActionButton - private var satPassList: List = emptyList() + private var aosTimer: CountDownTimer? = null override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -58,7 +57,7 @@ class SkyFragment : Fragment() { fab.setOnClickListener { showSelectSatDialog() } - setupTimer() + resetTimer() } private fun showSelectSatDialog() { @@ -104,6 +103,7 @@ class SkyFragment : Fragment() { } private fun calculatePasses() { + var satPassList: List lifecycleScope.launch(Dispatchers.Main) { recViewFuture.visibility = View.INVISIBLE progressBar.visibility = View.VISIBLE @@ -114,32 +114,44 @@ class SkyFragment : Fragment() { progressBar.isIndeterminate = false progressBar.visibility = View.INVISIBLE recViewFuture.visibility = View.VISIBLE + if (satPassList.isEmpty()) { + resetTimer() + } else { + setTimer(satPassList[0].pass.startTime.time) + } } } - private fun setupTimer() { - val cal = Calendar.getInstance() - cal.add(Calendar.DAY_OF_MONTH, 1) - cal.set(Calendar.HOUR_OF_DAY, 0) - cal.set(Calendar.MINUTE, 0) - cal.set(Calendar.SECOND, 0) - cal.set(Calendar.MILLISECOND, 0) - val totalMillis = cal.timeInMillis - System.currentTimeMillis() + private fun setTimer(passTime: Long) { + if (aosTimer == null) { + val totalMillis = passTime.minus(System.currentTimeMillis()) + aosTimer = object : CountDownTimer(totalMillis, 1000) { + override fun onFinish() { + Toast.makeText(activity, "Time is up!", Toast.LENGTH_SHORT).show() + this.cancel() + resetTimer() + } - val timer = object : CountDownTimer(totalMillis, 1000) { - override fun onFinish() { - Toast.makeText(activity, "Time is up!", Toast.LENGTH_SHORT).show() - } - - override fun onTick(millisUntilFinished: Long) { - timeToAos.text = String.format( - "AOS -%02d:%02d:%02d", - TimeUnit.MILLISECONDS.toHours(millisUntilFinished) % 60, - TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) % 60, - TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) % 60 - ) + override fun onTick(millisUntilFinished: Long) { + timeToAos.text = String.format( + "AOS -%02d:%02d:%02d", + TimeUnit.MILLISECONDS.toHours(millisUntilFinished) % 60, + TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) % 60, + TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) % 60 + ) + } } + (aosTimer as CountDownTimer).start() + } else { + resetTimer() } - timer.start() + } + + private fun resetTimer() { + if (aosTimer != null) { + (aosTimer as CountDownTimer).cancel() + aosTimer = null + } + timeToAos.text = String.format("AOS -%02d:%02d:%02d", 0, 0, 0) } } \ No newline at end of file