diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesAdapter.kt index db950ab7..86992e0f 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesAdapter.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesAdapter.kt @@ -69,7 +69,6 @@ class PassesAdapter(private val isUTC: Boolean, private val clickListener: Passe private val losAzFormat = itemView.context.getString(R.string.pass_los) private val startTimeFormat = itemView.context.getString(R.string.pass_startTime) private val elevFormat = itemView.context.getString(R.string.pat_elevation) - private val maxElFormat = itemView.context.getString(R.string.pass_elevation) private val endTimeFormat = itemView.context.getString(R.string.pass_endTime) private val placeholder = itemView.context.getString(R.string.pass_placeholder) private val timeZoneUTC = TimeZone.getTimeZone("UTC") @@ -99,7 +98,7 @@ class PassesAdapter(private val isUTC: Boolean, private val clickListener: Passe passAltitude.text = String.format(altFormat, satPass.altitude) passLos.text = String.format(losAzFormat, satPass.losAzimuth) passStart.text = startFormat.format(Date(satPass.aosTime)) - passElev.text = String.format(maxElFormat, satPass.maxElevation) + passElev.text = String.format(elevFormat, satPass.maxElevation) passEnd.text = endFormat.format(Date(satPass.losTime)) passProgress.progress = satPass.progress } diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesFragment.kt index 3f5c0b9d..8bcc67b6 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesFragment.kt @@ -69,7 +69,7 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC } }) } - passesRefreshBtn.setOnClickListener { refreshPasses() } + passesRefreshBtn.setOnClickListener { viewModel.calculatePasses() } passesMapBtn.setOnClickListener { navigateToMap() } passesFilterBtn.setOnClickListener { navigateToFilter() } passesFab.setOnClickListener { navigateToEntries() } @@ -87,10 +87,10 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC handleEntriesNumber(number) } getNavResult>(R.id.nav_passes, "prefs") { prefs -> - viewModel.forceCalculation(prefs.first, prefs.second) + viewModel.calculatePasses(prefs.first, prefs.second) } - getNavResult>(R.id.nav_passes, "selection") { selection -> - viewModel.saveSelectionAndRecalc(selection) + getNavResult>(R.id.nav_passes, "selection") { items -> + viewModel.calculatePasses(selection = items) } } @@ -98,18 +98,17 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC refreshAnimator = ValueAnimator.ofFloat(0f, -360f).apply { duration = 875 interpolator = LinearInterpolator() - repeatMode = ValueAnimator.RESTART repeatCount = ValueAnimator.INFINITE - addUpdateListener { anim -> - binding.passesRefreshBtn.rotation = anim.animatedValue as Float - } + addUpdateListener { binding.passesRefreshBtn.rotation = animatedValue as Float } } } - private fun handleEntriesNumber(number: Int?) { - number?.let { num -> - if (num == 0) binding.passesFab.setOnClickListener { requireContext().toast("0") } - else binding.passesFab.setOnClickListener { navigateToEntries() } + private fun handleEntriesNumber(number: Int) { + if (number > 0) { + binding.passesFab.setOnClickListener { navigateToEntries() } + } else { + val errorMessage = getString(R.string.passes_empty_db) + binding.passesFab.setOnClickListener { requireContext().toast(errorMessage) } } } @@ -163,10 +162,6 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC } } - private fun refreshPasses() { - viewModel.forceCalculation() - } - private fun navigateToMap() { val direction = PassesFragmentDirections.actionGlobalMapFragment() findNavController().navigate(direction) diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt index e4edd378..14c79507 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt @@ -57,21 +57,17 @@ class PassesViewModel @Inject constructor( fun shouldUseUTC() = settings.getUseUTC() - fun saveSelectionAndRecalc(selection: List) { - viewModelScope.launch { - repository.setEntriesSelection(selection) - forceCalculation() - } - } - - fun forceCalculation( + fun calculatePasses( hoursAhead: Int = settings.getHoursAhead(), minElevation: Double = settings.getMinElevation(), - timeRef: Long = System.currentTimeMillis() + timeRef: Long = System.currentTimeMillis(), + selection: List? = null ) { viewModelScope.launch { _passes.postValue(DataState.Loading) passesProcessing?.cancelAndJoin() + delay(3000) + selection?.let { items -> repository.setEntriesSelection(items) } settings.setHoursAhead(hoursAhead) settings.setMinElevation(minElevation) val satellites = repository.getSelectedEntries() diff --git a/app/src/main/res/layout/item_entry.xml b/app/src/main/res/layout/item_entry.xml index 573b9b63..9ce57cf1 100644 --- a/app/src/main/res/layout/item_entry.xml +++ b/app/src/main/res/layout/item_entry.xml @@ -6,11 +6,11 @@ android:id="@+id/entry_checkbox" android:layout_width="match_parent" android:layout_height="41dp" - android:layout_marginStart="8dp" + android:layout_marginStart="6dp" android:background="@color/cardRegular" android:ellipsize="end" android:lines="1" - android:padding="6dp" + android:padding="4dp" android:textColor="@color/textMain" android:textSize="@dimen/text_size_medium" /> diff --git a/app/src/main/res/layout/item_pass.xml b/app/src/main/res/layout/item_pass.xml index 9b179399..8a75a08e 100644 --- a/app/src/main/res/layout/item_pass.xml +++ b/app/src/main/res/layout/item_pass.xml @@ -13,11 +13,11 @@ android:id="@+id/pass_name" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginStart="6dp" + android:layout_marginStart="8dp" android:layout_marginTop="4dp" android:text="@string/pass_satName" - android:textSize="@dimen/text_size_small" android:textColor="@color/accent" + android:textSize="@dimen/text_size_small" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -25,10 +25,10 @@ android:id="@+id/pass_id" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginEnd="6dp" + android:layout_marginEnd="8dp" android:text="@string/pass_satId" - android:textSize="@dimen/text_size_small" android:textColor="@color/accent" + android:textSize="@dimen/text_size_small" app:layout_constraintBaseline_toBaselineOf="@+id/pass_name" app:layout_constraintEnd_toEndOf="parent" /> @@ -103,6 +103,7 @@ style="?android:attr/progressBarStyleHorizontal" android:layout_width="0dp" android:layout_height="wrap_content" + android:layout_marginTop="1dp" android:layout_marginBottom="2dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="@+id/pass_end" diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 934193b9..4c2bfa44 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -46,6 +46,7 @@ Ошибка обновления спутников Нет предстоящих пролётов + Пожалуйста, обновите базу данных спутников через меню Настроек НПС - %.1f° Азимут: %.1f° diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 68a8151c..be08f964 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -48,6 +48,7 @@ 00:00:00 No upcoming passes + No data to show. Please update the database via Settings menu. %s Id:%d