mirror of
https://github.com/rt-bishop/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
Removed pass prefs dialog, strings cleanup
This commit is contained in:
1 parent
6631f1e745
commit
c6aae706f9
7 files changed
+9
-165
No files matched your search
@@ -22,8 +22,6 @@ package com.rtbishop.look4sat.ui.fragments
|
|||||||
import android.animation.ObjectAnimator
|
import android.animation.ObjectAnimator
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.EditText
|
|
||||||
import androidx.appcompat.app.AlertDialog
|
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.activityViewModels
|
import androidx.fragment.app.activityViewModels
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
@@ -37,7 +35,6 @@ import com.rtbishop.look4sat.ui.adapters.PassesAdapter
|
|||||||
import com.rtbishop.look4sat.utility.PrefsManager
|
import com.rtbishop.look4sat.utility.PrefsManager
|
||||||
import com.rtbishop.look4sat.utility.Utilities
|
import com.rtbishop.look4sat.utility.Utilities
|
||||||
import com.rtbishop.look4sat.utility.Utilities.getRotationAnimator
|
import com.rtbishop.look4sat.utility.Utilities.getRotationAnimator
|
||||||
import com.rtbishop.look4sat.utility.Utilities.snack
|
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@@ -88,10 +85,6 @@ class PassesFragment : Fragment(R.layout.fragment_passes) {
|
|||||||
(itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false
|
(itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false
|
||||||
setHasFixedSize(true)
|
setHasFixedSize(true)
|
||||||
}
|
}
|
||||||
passesFilter.setOnClickListener {
|
|
||||||
val passPrefs = prefsManager.getPassPrefs()
|
|
||||||
showSatPassPrefsDialog(passPrefs.hoursAhead, passPrefs.minEl)
|
|
||||||
}
|
|
||||||
animator = passesFab.getRotationAnimator()
|
animator = passesFab.getRotationAnimator()
|
||||||
passesFab.setOnClickListener {
|
passesFab.setOnClickListener {
|
||||||
if (animator.isRunning) {
|
if (animator.isRunning) {
|
||||||
@@ -104,44 +97,6 @@ class PassesFragment : Fragment(R.layout.fragment_passes) {
|
|||||||
viewModel.triggerCalculation()
|
viewModel.triggerCalculation()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showSatPassPrefsDialog(hoursAhead: Int, minEl: Double) {
|
|
||||||
val satPassPrefView = View.inflate(requireContext(), R.layout.dialog_passes, null)
|
|
||||||
val etHoursAhead = satPassPrefView.findViewById<EditText>(R.id.pref_et_hoursAhead)
|
|
||||||
val etMinEl = satPassPrefView.findViewById<EditText>(R.id.pref_et_minEl)
|
|
||||||
etHoursAhead.setText(hoursAhead.toString())
|
|
||||||
etMinEl.setText(minEl.toString())
|
|
||||||
|
|
||||||
AlertDialog.Builder(requireContext()).apply {
|
|
||||||
setPositiveButton(getString(android.R.string.ok)) { _, _ ->
|
|
||||||
val hoursString = etHoursAhead.text.toString()
|
|
||||||
val minElString = etMinEl.text.toString()
|
|
||||||
if (hoursString.isNotEmpty() && minElString.isNotEmpty()) {
|
|
||||||
val hours = hoursString.toInt()
|
|
||||||
val elevation = minElString.toDouble()
|
|
||||||
when {
|
|
||||||
hours < 1 || hours > 168 -> {
|
|
||||||
getString(R.string.pref_hours_ahead_input_error).snack(requireView())
|
|
||||||
}
|
|
||||||
elevation < 0 || elevation > 90 -> {
|
|
||||||
getString(R.string.pref_min_el_input_error).snack(requireView())
|
|
||||||
}
|
|
||||||
else -> {
|
|
||||||
prefsManager.setPassPrefs(hours, elevation)
|
|
||||||
viewModel.calculatePasses()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else getString(R.string.err_enter_value).snack(requireView())
|
|
||||||
|
|
||||||
}
|
|
||||||
setNegativeButton(getString(android.R.string.cancel)) { dialog, _ ->
|
|
||||||
dialog.cancel()
|
|
||||||
}
|
|
||||||
setView(satPassPrefView)
|
|
||||||
create()
|
|
||||||
show()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun tickMainTimer(timeNow: Long) {
|
private fun tickMainTimer(timeNow: Long) {
|
||||||
if (passes.isNotEmpty()) {
|
if (passes.isNotEmpty()) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import android.location.LocationManager
|
|||||||
import androidx.core.content.edit
|
import androidx.core.content.edit
|
||||||
import com.github.amsacode.predict4java.GroundStationPosition
|
import com.github.amsacode.predict4java.GroundStationPosition
|
||||||
import com.rtbishop.look4sat.data.PassPrefs
|
import com.rtbishop.look4sat.data.PassPrefs
|
||||||
import com.rtbishop.look4sat.utility.Utilities.putDouble
|
|
||||||
import com.rtbishop.look4sat.utility.Utilities.round
|
import com.rtbishop.look4sat.utility.Utilities.round
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@@ -35,8 +34,6 @@ class PrefsManager @Inject constructor(
|
|||||||
companion object {
|
companion object {
|
||||||
const val hoursAhead = "hoursAhead"
|
const val hoursAhead = "hoursAhead"
|
||||||
const val minimalElevation = "minimalElevation"
|
const val minimalElevation = "minimalElevation"
|
||||||
const val keyHoursAhead = "hoursAhead"
|
|
||||||
const val keyMinElevation = "minEl"
|
|
||||||
const val keyLatitude = "latitude"
|
const val keyLatitude = "latitude"
|
||||||
const val keyLongitude = "longitude"
|
const val keyLongitude = "longitude"
|
||||||
const val keyAltitude = "altitude"
|
const val keyAltitude = "altitude"
|
||||||
@@ -52,14 +49,6 @@ class PrefsManager @Inject constructor(
|
|||||||
return PassPrefs(hoursAhead, minEl)
|
return PassPrefs(hoursAhead, minEl)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setPassPrefs(hoursAhead: Int, minEl: Double) {
|
|
||||||
preferences.edit {
|
|
||||||
putInt(keyHoursAhead, hoursAhead)
|
|
||||||
putDouble(keyMinElevation, minEl)
|
|
||||||
apply()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getStationPosition(): GroundStationPosition {
|
fun getStationPosition(): GroundStationPosition {
|
||||||
val lat = preferences.getString(keyLatitude, defaultGSP)!!.toDouble()
|
val lat = preferences.getString(keyLatitude, defaultGSP)!!.toDouble()
|
||||||
val lon = preferences.getString(keyLongitude, defaultGSP)!!.toDouble()
|
val lon = preferences.getString(keyLongitude, defaultGSP)!!.toDouble()
|
||||||
|
|||||||
@@ -1,79 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?><!--
|
|
||||||
~ Look4Sat. Amateur radio and weather satellite tracker and passes predictor for Android.
|
|
||||||
~ Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com)
|
|
||||||
~
|
|
||||||
~ This program is free software; you can redistribute it and/or modify
|
|
||||||
~ it under the terms of the GNU General Public License as published by
|
|
||||||
~ the Free Software Foundation; either version 2 of the License, or
|
|
||||||
~ (at your option) any later version.
|
|
||||||
~
|
|
||||||
~ This program is distributed in the hope that it will be useful,
|
|
||||||
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
~ GNU General Public License for more details.
|
|
||||||
~
|
|
||||||
~ You should have received a copy of the GNU General Public License along
|
|
||||||
~ with this program; if not, write to the Free Software Foundation, Inc.,
|
|
||||||
~ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
android:id="@+id/pass_pref_root"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/pref_tv_title"
|
|
||||||
style="@style/DialogText"
|
|
||||||
android:layout_marginStart="24dp"
|
|
||||||
android:layout_marginTop="12dp"
|
|
||||||
android:text="@string/dialog_filter_passes"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/pref_tv_hoursAhead"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="24dp"
|
|
||||||
android:layout_marginTop="12dp"
|
|
||||||
android:layout_marginEnd="24dp"
|
|
||||||
android:text="@string/pref_hours_ahead_summary"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/pref_tv_title" />
|
|
||||||
|
|
||||||
<EditText
|
|
||||||
android:id="@+id/pref_et_hoursAhead"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:hint="@string/pref_hours_ahead"
|
|
||||||
android:importantForAutofill="no"
|
|
||||||
android:inputType="number"
|
|
||||||
app:layout_constraintEnd_toEndOf="@+id/pref_tv_hoursAhead"
|
|
||||||
app:layout_constraintStart_toStartOf="@+id/pref_tv_hoursAhead"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/pref_tv_hoursAhead" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/pref_tv_minEl"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="8dp"
|
|
||||||
android:text="@string/pref_min_el_summary"
|
|
||||||
app:layout_constraintEnd_toEndOf="@+id/pref_et_hoursAhead"
|
|
||||||
app:layout_constraintStart_toStartOf="@+id/pref_et_hoursAhead"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/pref_et_hoursAhead" />
|
|
||||||
|
|
||||||
<EditText
|
|
||||||
android:id="@+id/pref_et_minEl"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:hint="@string/pref_minimal_elevation"
|
|
||||||
android:importantForAutofill="no"
|
|
||||||
android:inputType="number|numberDecimal"
|
|
||||||
app:layout_constraintEnd_toEndOf="@+id/pref_tv_minEl"
|
|
||||||
app:layout_constraintStart_toStartOf="@+id/pref_tv_minEl"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/pref_tv_minEl" />
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
@@ -49,17 +49,6 @@
|
|||||||
app:layout_constraintStart_toStartOf="@id/passes_bar"
|
app:layout_constraintStart_toStartOf="@id/passes_bar"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
<ImageButton
|
|
||||||
android:id="@+id/passes_filter"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:backgroundTint="@color/themeDark"
|
|
||||||
android:contentDescription="@string/placeholder"
|
|
||||||
android:src="@drawable/ic_prefs"
|
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/passes_timer"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="@+id/passes_timer" />
|
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/passes_recycler"
|
android:id="@+id/passes_recycler"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|||||||
@@ -26,17 +26,12 @@
|
|||||||
<string name="menu_prefs">Настройки</string>
|
<string name="menu_prefs">Настройки</string>
|
||||||
<string name="menu_about">Инфо</string>
|
<string name="menu_about">Инфо</string>
|
||||||
|
|
||||||
<string name="dialog_filter_passes">Фильтровать пролеты</string>
|
|
||||||
<string name="dialog_tle_sources">Управление источниками TLE</string>
|
<string name="dialog_tle_sources">Управление источниками TLE</string>
|
||||||
<string name="dialog_entries_hint">ID / Имя</string>
|
<string name="dialog_entries_hint">ID / Имя</string>
|
||||||
|
|
||||||
<string name="pref_passes_preferences">Настройки пролетов</string>
|
<string name="pass_prefs_title">Настройки пролетов спутников</string>
|
||||||
<string name="pref_hours_ahead">Количество часов</string>
|
<string name="hours_ahead_title">Количество часов</string>
|
||||||
<string name="pref_hours_ahead_summary">Показать пролеты за след. Х часов</string>
|
<string name="minimal_elevation_title">Минимальная элевация</string>
|
||||||
<string name="pref_hours_ahead_input_error">Введите значение между 1ч и 168ч</string>
|
|
||||||
<string name="pref_minimal_elevation">Минимальная элевация</string>
|
|
||||||
<string name="pref_min_el_summary">Показать пролеты с элевацией более</string>
|
|
||||||
<string name="pref_min_el_input_error">Введите значение между 0° и 90°</string>
|
|
||||||
|
|
||||||
<string name="pref_gsp_title">Местоположение наземной станции</string>
|
<string name="pref_gsp_title">Местоположение наземной станции</string>
|
||||||
<string name="pref_lat_title">Широта, град</string>
|
<string name="pref_lat_title">Широта, град</string>
|
||||||
|
|||||||
@@ -27,17 +27,12 @@
|
|||||||
<string name="menu_prefs">Settings</string>
|
<string name="menu_prefs">Settings</string>
|
||||||
<string name="menu_about">Info</string>
|
<string name="menu_about">Info</string>
|
||||||
|
|
||||||
<string name="dialog_filter_passes">Filter passes</string>
|
|
||||||
<string name="dialog_tle_sources">Manage TLE sources</string>
|
<string name="dialog_tle_sources">Manage TLE sources</string>
|
||||||
<string name="dialog_entries_hint">ID / Name</string>
|
<string name="dialog_entries_hint">ID / Name</string>
|
||||||
|
|
||||||
<string name="pref_passes_preferences">Passes preferences</string>
|
<string name="pass_prefs_title">Satellite pass preferences</string>
|
||||||
<string name="pref_hours_ahead">Hours ahead</string>
|
<string name="hours_ahead_title">Hours ahead</string>
|
||||||
<string name="pref_hours_ahead_summary">Show passes that occur within X hours</string>
|
<string name="minimal_elevation_title">Minimal elevation</string>
|
||||||
<string name="pref_hours_ahead_input_error">Set the value between 1h and 168h</string>
|
|
||||||
<string name="pref_minimal_elevation">Minimal elevation</string>
|
|
||||||
<string name="pref_min_el_summary">Show passes with max elevation above</string>
|
|
||||||
<string name="pref_min_el_input_error">Set the value between 0° and 90°</string>
|
|
||||||
|
|
||||||
<string name="pref_gsp_title">Ground station position</string>
|
<string name="pref_gsp_title">Ground station position</string>
|
||||||
<string name="pref_lat_title">Latitude, deg</string>
|
<string name="pref_lat_title">Latitude, deg</string>
|
||||||
|
|||||||
@@ -42,12 +42,12 @@
|
|||||||
app:useSimpleSummaryProvider="true" />
|
app:useSimpleSummaryProvider="true" />
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
android:title="@string/pref_passes_preferences"
|
android:title="@string/pass_prefs_title"
|
||||||
app:iconSpaceReserved="false">
|
app:iconSpaceReserved="false">
|
||||||
<SeekBarPreference
|
<SeekBarPreference
|
||||||
android:key="hoursAhead"
|
android:key="hoursAhead"
|
||||||
android:max="72"
|
android:max="72"
|
||||||
android:title="@string/pref_hours_ahead"
|
android:title="@string/hours_ahead_title"
|
||||||
app:defaultValue="8"
|
app:defaultValue="8"
|
||||||
app:iconSpaceReserved="false"
|
app:iconSpaceReserved="false"
|
||||||
app:min="1"
|
app:min="1"
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
<SeekBarPreference
|
<SeekBarPreference
|
||||||
android:key="minimalElevation"
|
android:key="minimalElevation"
|
||||||
android:max="72"
|
android:max="72"
|
||||||
android:title="@string/pref_minimal_elevation"
|
android:title="@string/minimal_elevation_title"
|
||||||
app:adjustable="false"
|
app:adjustable="false"
|
||||||
app:defaultValue="16"
|
app:defaultValue="16"
|
||||||
app:iconSpaceReserved="false"
|
app:iconSpaceReserved="false"
|
||||||
|
|||||||
Reference in new issue
Block a user