mirror of
https://github.com/rt-bishop/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
Various changes to layouts and strings
This commit is contained in:
1 parent
acc308379c
commit
930e05cc58
40 files changed
+538
-631
No files matched your search
@@ -74,7 +74,7 @@ class LocationHandler @Inject constructor(
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
_stationPosition.value =
|
_stationPosition.value =
|
||||||
DataState.Error(context.getString(R.string.pref_pos_manual_error))
|
DataState.Error(context.getString(R.string.location_manual_error))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,7 +89,7 @@ class LocationHandler @Inject constructor(
|
|||||||
manager.requestLocationUpdates(providerGps, 0L, 0f, this)
|
manager.requestLocationUpdates(providerGps, 0L, 0f, this)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
_stationPosition.value = DataState.Error(context.getString(R.string.pref_pos_gps_null))
|
_stationPosition.value = DataState.Error(context.getString(R.string.location_null))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,7 +104,7 @@ class LocationHandler @Inject constructor(
|
|||||||
manager.requestLocationUpdates(providerNet, 0L, 0f, this)
|
manager.requestLocationUpdates(providerNet, 0L, 0f, this)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
_stationPosition.value = DataState.Error(context.getString(R.string.pref_pos_gps_null))
|
_stationPosition.value = DataState.Error(context.getString(R.string.location_null))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -117,7 +117,7 @@ class LocationHandler @Inject constructor(
|
|||||||
settings.saveStationPosition(currentPosition)
|
settings.saveStationPosition(currentPosition)
|
||||||
_stationPosition.value = DataState.Success(currentPosition)
|
_stationPosition.value = DataState.Success(currentPosition)
|
||||||
} else {
|
} else {
|
||||||
_stationPosition.value = DataState.Error(context.getString(R.string.pref_pos_qth_error))
|
_stationPosition.value = DataState.Error(context.getString(R.string.location_qth_error))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,9 @@ import dagger.Provides
|
|||||||
import dagger.hilt.InstallIn
|
import dagger.hilt.InstallIn
|
||||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||||
import dagger.hilt.components.SingletonComponent
|
import dagger.hilt.components.SingletonComponent
|
||||||
|
import kotlinx.coroutines.CoroutineDispatcher
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import javax.inject.Qualifier
|
||||||
import javax.inject.Singleton
|
import javax.inject.Singleton
|
||||||
|
|
||||||
@Module
|
@Module
|
||||||
@@ -56,4 +59,20 @@ object AppModule {
|
|||||||
fun provideSharedPreferences(@ApplicationContext context: Context): SharedPreferences {
|
fun provideSharedPreferences(@ApplicationContext context: Context): SharedPreferences {
|
||||||
return context.getSharedPreferences("default", Context.MODE_PRIVATE)
|
return context.getSharedPreferences("default", Context.MODE_PRIVATE)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@DefaultDispatcher
|
||||||
|
fun provideDefaultDispatcher(): CoroutineDispatcher = Dispatchers.Default
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@IoDispatcher
|
||||||
|
fun provideIoDispatcher(): CoroutineDispatcher = Dispatchers.IO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Qualifier
|
||||||
|
@Retention(AnnotationRetention.BINARY)
|
||||||
|
annotation class DefaultDispatcher
|
||||||
|
|
||||||
|
@Qualifier
|
||||||
|
@Retention(AnnotationRetention.BINARY)
|
||||||
|
annotation class IoDispatcher
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
/*
|
|
||||||
* Look4Sat. Amateur radio satellite tracker and pass predictor.
|
|
||||||
* Copyright (C) 2019-2021 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 3 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, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
package com.rtbishop.look4sat.injection
|
|
||||||
|
|
||||||
import dagger.Module
|
|
||||||
import dagger.Provides
|
|
||||||
import dagger.hilt.InstallIn
|
|
||||||
import dagger.hilt.components.SingletonComponent
|
|
||||||
import kotlinx.coroutines.CoroutineDispatcher
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
|
||||||
import javax.inject.Qualifier
|
|
||||||
|
|
||||||
@Module
|
|
||||||
@InstallIn(SingletonComponent::class)
|
|
||||||
object KotlinModule {
|
|
||||||
|
|
||||||
@Provides
|
|
||||||
@DefaultDispatcher
|
|
||||||
fun provideDefaultDispatcher(): CoroutineDispatcher = Dispatchers.Default
|
|
||||||
|
|
||||||
@Provides
|
|
||||||
@IoDispatcher
|
|
||||||
fun provideIoDispatcher(): CoroutineDispatcher = Dispatchers.IO
|
|
||||||
|
|
||||||
@Provides
|
|
||||||
@MainDispatcher
|
|
||||||
fun provideMainDispatcher(): CoroutineDispatcher = Dispatchers.Main
|
|
||||||
}
|
|
||||||
|
|
||||||
@Qualifier
|
|
||||||
@Retention(AnnotationRetention.BINARY)
|
|
||||||
annotation class DefaultDispatcher
|
|
||||||
|
|
||||||
@Qualifier
|
|
||||||
@Retention(AnnotationRetention.BINARY)
|
|
||||||
annotation class IoDispatcher
|
|
||||||
|
|
||||||
@Qualifier
|
|
||||||
@Retention(AnnotationRetention.BINARY)
|
|
||||||
annotation class MainDispatcher
|
|
||||||
+15
-36
@@ -27,7 +27,6 @@ import androidx.recyclerview.widget.DividerItemDecoration
|
|||||||
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.GridLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import androidx.recyclerview.widget.SimpleItemAnimator
|
import androidx.recyclerview.widget.SimpleItemAnimator
|
||||||
import com.google.android.material.snackbar.Snackbar
|
|
||||||
import com.rtbishop.look4sat.R
|
import com.rtbishop.look4sat.R
|
||||||
import com.rtbishop.look4sat.databinding.FragmentEntriesBinding
|
import com.rtbishop.look4sat.databinding.FragmentEntriesBinding
|
||||||
import com.rtbishop.look4sat.domain.model.DataState
|
import com.rtbishop.look4sat.domain.model.DataState
|
||||||
@@ -44,22 +43,14 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) {
|
|||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
binding = FragmentEntriesBinding.bind(view)
|
val entriesAdapter = EntriesAdapter(viewModel)
|
||||||
setupComponents()
|
binding = FragmentEntriesBinding.bind(view).apply {
|
||||||
}
|
|
||||||
|
|
||||||
private fun setupComponents() {
|
|
||||||
val context = requireContext()
|
|
||||||
val adapter = EntriesAdapter(viewModel)
|
|
||||||
val layoutManager = GridLayoutManager(context, 2)
|
|
||||||
val itemDecoration = DividerItemDecoration(context, layoutManager.orientation)
|
|
||||||
binding.run {
|
|
||||||
entriesRecycler.apply {
|
entriesRecycler.apply {
|
||||||
setHasFixedSize(true)
|
setHasFixedSize(true)
|
||||||
this.adapter = adapter
|
adapter = entriesAdapter
|
||||||
this.layoutManager = layoutManager
|
layoutManager = GridLayoutManager(requireContext(), 2)
|
||||||
addItemDecoration(itemDecoration)
|
|
||||||
(itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false
|
(itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false
|
||||||
|
addItemDecoration(DividerItemDecoration(requireContext(), 1))
|
||||||
addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||||
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
||||||
if (dy > 0 && entriesFab.visibility == View.VISIBLE) entriesFab.hide()
|
if (dy > 0 && entriesFab.visibility == View.VISIBLE) entriesFab.hide()
|
||||||
@@ -67,29 +58,28 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
entriesBackBtn.setOnClickListener { findNavController().navigateUp() }
|
entriesBtnBack.setOnClickListener { findNavController().navigateUp() }
|
||||||
entriesSearch.doOnTextChanged { text, _, _, _ -> viewModel.setQuery(text.toString()) }
|
entriesSearch.doOnTextChanged { text, _, _, _ -> viewModel.setQuery(text.toString()) }
|
||||||
entriesModesBtn.setOnClickListener { navigateToModesDialog() }
|
entriesBtnModes.setOnClickListener {
|
||||||
entriesSelectBtn.setOnClickListener { viewModel.selectCurrentItems(true) }
|
val direction = EntriesFragmentDirections.entriesToModes()
|
||||||
entriesClearBtn.setOnClickListener { viewModel.selectCurrentItems(false) }
|
findNavController().navigate(direction)
|
||||||
|
}
|
||||||
|
entriesBtnSelect.setOnClickListener { viewModel.selectCurrentItems(true) }
|
||||||
|
entriesBtnClear.setOnClickListener { viewModel.selectCurrentItems(false) }
|
||||||
entriesFab.setOnClickListener {
|
entriesFab.setOnClickListener {
|
||||||
setNavResult("selection", viewModel.saveSelection())
|
setNavResult("selection", viewModel.saveSelection())
|
||||||
findNavController().popBackStack()
|
findNavController().popBackStack()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
viewModel.satData.observe(viewLifecycleOwner) { satData ->
|
viewModel.satData.observe(viewLifecycleOwner) { satData ->
|
||||||
handleSatData(satData, binding, adapter)
|
handleSatData(satData, entriesAdapter)
|
||||||
}
|
}
|
||||||
getNavResult<List<String>>(R.id.nav_entries, "modes") { modes ->
|
getNavResult<List<String>>(R.id.nav_entries, "modes") { modes ->
|
||||||
viewModel.saveSelectedModes(modes)
|
viewModel.saveSelectedModes(modes)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleSatData(
|
private fun handleSatData(dataState: DataState<List<SatItem>>, entriesAdapter: EntriesAdapter) {
|
||||||
dataState: DataState<List<SatItem>>,
|
|
||||||
binding: FragmentEntriesBinding,
|
|
||||||
entriesAdapter: EntriesAdapter
|
|
||||||
) {
|
|
||||||
when (dataState) {
|
when (dataState) {
|
||||||
is DataState.Success -> {
|
is DataState.Success -> {
|
||||||
entriesAdapter.submitList(dataState.data)
|
entriesAdapter.submitList(dataState.data)
|
||||||
@@ -100,18 +90,7 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) {
|
|||||||
binding.entriesProgress.visibility = View.VISIBLE
|
binding.entriesProgress.visibility = View.VISIBLE
|
||||||
binding.entriesRecycler.visibility = View.INVISIBLE
|
binding.entriesRecycler.visibility = View.INVISIBLE
|
||||||
}
|
}
|
||||||
is DataState.Error -> {
|
else -> {}
|
||||||
binding.entriesProgress.visibility = View.INVISIBLE
|
|
||||||
binding.entriesRecycler.visibility = View.VISIBLE
|
|
||||||
val message = getString(R.string.entries_update_error)
|
|
||||||
Snackbar.make(requireView(), message, Snackbar.LENGTH_SHORT).show()
|
|
||||||
}
|
|
||||||
DataState.Handled -> {}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun navigateToModesDialog() {
|
|
||||||
val direction = EntriesFragmentDirections.actionEntriesToModes()
|
|
||||||
findNavController().navigate(direction)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -98,9 +98,9 @@ class MapFragment : Fragment(R.layout.fragment_map) {
|
|||||||
// add overlays: 0 - GSP, 1 - SatTrack, 2 - SatFootprint, 3 - SatIcons
|
// add overlays: 0 - GSP, 1 - SatTrack, 2 - SatFootprint, 3 - SatIcons
|
||||||
overlays.addAll(Array(4) { FolderOverlay() })
|
overlays.addAll(Array(4) { FolderOverlay() })
|
||||||
}
|
}
|
||||||
mapBackBtn.setOnClickListener { findNavController().navigateUp() }
|
mapBtnBack.setOnClickListener { findNavController().navigateUp() }
|
||||||
mapPrevBtn.setOnClickListener { viewModel.scrollSelection(true) }
|
mapBtnPrev.setOnClickListener { viewModel.scrollSelection(true) }
|
||||||
mapNextBtn.setOnClickListener { viewModel.scrollSelection(false) }
|
mapBtnNext.setOnClickListener { viewModel.scrollSelection(false) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,7 +118,7 @@ class MapFragment : Fragment(R.layout.fragment_map) {
|
|||||||
Marker(mapView).apply {
|
Marker(mapView).apply {
|
||||||
setInfoWindow(null)
|
setInfoWindow(null)
|
||||||
setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM)
|
setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM)
|
||||||
icon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_gps)
|
icon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_position)
|
||||||
position = GeoPoint(stationPos.latitude, stationPos.longitude)
|
position = GeoPoint(stationPos.latitude, stationPos.longitude)
|
||||||
mapView.overlays[0] = this
|
mapView.overlays[0] = this
|
||||||
mapView.invalidate()
|
mapView.invalidate()
|
||||||
@@ -206,13 +206,13 @@ class MapFragment : Fragment(R.layout.fragment_map) {
|
|||||||
mapTitle.text = mapData.name
|
mapTitle.text = mapData.name
|
||||||
mapDataId.text = String.format(getString(R.string.map_sat_id), mapData.catNum)
|
mapDataId.text = String.format(getString(R.string.map_sat_id), mapData.catNum)
|
||||||
mapDataQth.text = String.format(getString(R.string.map_qth), mapData.qthLoc)
|
mapDataQth.text = String.format(getString(R.string.map_qth), mapData.qthLoc)
|
||||||
mapDataAlt.text = String.format(getString(R.string.pat_altitude), mapData.altitude)
|
mapDataAlt.text = String.format(getString(R.string.map_altitude), mapData.altitude)
|
||||||
mapDataDst.text = String.format(getString(R.string.pat_distance), mapData.range)
|
mapDataDst.text = String.format(getString(R.string.map_distance), mapData.range)
|
||||||
mapDataVel.text = String.format(getString(R.string.pat_osm_vel), mapData.velocity)
|
mapDataVel.text = String.format(getString(R.string.map_velocity), mapData.velocity)
|
||||||
mapDataLat.text =
|
mapDataLat.text =
|
||||||
String.format(getString(R.string.pat_osm_lat), mapData.osmPos.latitude)
|
String.format(getString(R.string.map_latitude), mapData.osmPos.latitude)
|
||||||
mapDataLon.text =
|
mapDataLon.text =
|
||||||
String.format(getString(R.string.pat_osm_lon), mapData.osmPos.longitude)
|
String.format(getString(R.string.map_longitude), mapData.osmPos.longitude)
|
||||||
}
|
}
|
||||||
binding.mapView.invalidate()
|
binding.mapView.invalidate()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ class FilterDialog : AppCompatDialogFragment() {
|
|||||||
)
|
)
|
||||||
filterHoursEdit.setText(preferences.getHoursAhead().toString())
|
filterHoursEdit.setText(preferences.getHoursAhead().toString())
|
||||||
filterElevEdit.setText(preferences.getMinElevation().toString())
|
filterElevEdit.setText(preferences.getMinElevation().toString())
|
||||||
filterPosBtn.setOnClickListener {
|
filterBtnPos.setOnClickListener {
|
||||||
val hoursAhead = try {
|
val hoursAhead = try {
|
||||||
filterHoursEdit.text.toString().toInt()
|
filterHoursEdit.text.toString().toInt()
|
||||||
} catch (exception: Exception) {
|
} catch (exception: Exception) {
|
||||||
@@ -47,7 +47,7 @@ class FilterDialog : AppCompatDialogFragment() {
|
|||||||
setNavResult("prefs", Pair(hoursAhead, minElevation))
|
setNavResult("prefs", Pair(hoursAhead, minElevation))
|
||||||
dismiss()
|
dismiss()
|
||||||
}
|
}
|
||||||
filterNegBtn.setOnClickListener { dismiss() }
|
filterBtnNeg.setOnClickListener { dismiss() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -73,7 +73,7 @@ class PassesAdapter(private val clickListener: PassesClickListener) :
|
|||||||
private val altFormat = itemView.context.getString(R.string.pass_altitude)
|
private val altFormat = itemView.context.getString(R.string.pass_altitude)
|
||||||
private val losAzFormat = itemView.context.getString(R.string.pass_los)
|
private val losAzFormat = itemView.context.getString(R.string.pass_los)
|
||||||
private val startTimeFormat = itemView.context.getString(R.string.pass_startTime)
|
private val startTimeFormat = itemView.context.getString(R.string.pass_startTime)
|
||||||
private val elevFormat = itemView.context.getString(R.string.pat_elevation)
|
private val elevFormat = itemView.context.getString(R.string.pass_elevation)
|
||||||
private val endTimeFormat = itemView.context.getString(R.string.pass_endTime)
|
private val endTimeFormat = itemView.context.getString(R.string.pass_endTime)
|
||||||
private val placeholder = itemView.context.getString(R.string.pass_placeholder)
|
private val placeholder = itemView.context.getString(R.string.pass_placeholder)
|
||||||
private val timeZoneUTC = TimeZone.getTimeZone("UTC")
|
private val timeZoneUTC = TimeZone.getTimeZone("UTC")
|
||||||
|
|||||||
+13
-15
@@ -62,17 +62,17 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
passesRefreshBtn.setOnClickListener { viewModel.calculatePasses() }
|
passesBtnRefresh.setOnClickListener { viewModel.calculatePasses() }
|
||||||
passesMapBtn.setOnClickListener {
|
passesBtnMap.setOnClickListener {
|
||||||
val dir = PassesFragmentDirections.actionGlobalMapFragment()
|
val dir = PassesFragmentDirections.globalToMap()
|
||||||
findNavController().navigate(dir)
|
findNavController().navigate(dir)
|
||||||
}
|
}
|
||||||
passesFilterBtn.setOnClickListener {
|
passesBtnFilter.setOnClickListener {
|
||||||
val dir = PassesFragmentDirections.actionPassesToFilter()
|
val dir = PassesFragmentDirections.passesToFilter()
|
||||||
findNavController().navigate(dir)
|
findNavController().navigate(dir)
|
||||||
}
|
}
|
||||||
passesSettingsBtn.setOnClickListener {
|
passesBtnSettings.setOnClickListener {
|
||||||
val dir = PassesFragmentDirections.actionGlobalSettingsFragment()
|
val dir = PassesFragmentDirections.globalToSettings()
|
||||||
findNavController().navigate(dir)
|
findNavController().navigate(dir)
|
||||||
}
|
}
|
||||||
setupAnimator()
|
setupAnimator()
|
||||||
@@ -82,7 +82,7 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC
|
|||||||
|
|
||||||
override fun navigateToPass(satPass: SatPass) {
|
override fun navigateToPass(satPass: SatPass) {
|
||||||
if (satPass.progress < 100) satPass.run {
|
if (satPass.progress < 100) satPass.run {
|
||||||
val dir = PassesFragmentDirections.actionGlobalRadarFragment(this.catNum, this.aosTime)
|
val dir = PassesFragmentDirections.globalToRadar(this.catNum, this.aosTime)
|
||||||
findNavController().navigate(dir)
|
findNavController().navigate(dir)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -98,7 +98,7 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC
|
|||||||
duration = 875
|
duration = 875
|
||||||
interpolator = LinearInterpolator()
|
interpolator = LinearInterpolator()
|
||||||
repeatCount = ValueAnimator.INFINITE
|
repeatCount = ValueAnimator.INFINITE
|
||||||
addUpdateListener { binding?.passesRefreshBtn?.rotation = animatedValue as Float }
|
addUpdateListener { binding?.passesBtnRefresh?.rotation = animatedValue as Float }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -121,7 +121,7 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC
|
|||||||
binding?.run {
|
binding?.run {
|
||||||
if (number > 0) {
|
if (number > 0) {
|
||||||
passesFab.setOnClickListener {
|
passesFab.setOnClickListener {
|
||||||
val direction = PassesFragmentDirections.actionGlobalEntriesFragment()
|
val direction = PassesFragmentDirections.globalToEntries()
|
||||||
findNavController().navigate(direction)
|
findNavController().navigate(direction)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -140,20 +140,18 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC
|
|||||||
passesAdapter.submitList(state.data)
|
passesAdapter.submitList(state.data)
|
||||||
tickMainTimer(state.data)
|
tickMainTimer(state.data)
|
||||||
if (state.data.isNotEmpty()) { // show new passes list
|
if (state.data.isNotEmpty()) { // show new passes list
|
||||||
passesRecycler.visibility = View.VISIBLE
|
|
||||||
passesEmpty.visibility = View.INVISIBLE
|
passesEmpty.visibility = View.INVISIBLE
|
||||||
passesRefreshBtn.isEnabled = true
|
passesBtnRefresh.isEnabled = true
|
||||||
refreshAnimator?.cancel()
|
refreshAnimator?.cancel()
|
||||||
} else { // show no passes message
|
} else { // show no passes message
|
||||||
passesRecycler.visibility = View.INVISIBLE
|
|
||||||
passesEmpty.visibility = View.VISIBLE
|
passesEmpty.visibility = View.VISIBLE
|
||||||
passesRefreshBtn.isEnabled = true
|
passesBtnRefresh.isEnabled = true
|
||||||
refreshAnimator?.cancel()
|
refreshAnimator?.cancel()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
is DataState.Loading -> {
|
is DataState.Loading -> {
|
||||||
refreshAnimator?.start()
|
refreshAnimator?.start()
|
||||||
passesRefreshBtn.isEnabled = false
|
passesBtnRefresh.isEnabled = false
|
||||||
passesTimer.text = 0L.toTimerString()
|
passesTimer.text = 0L.toTimerString()
|
||||||
}
|
}
|
||||||
else -> {}
|
else -> {}
|
||||||
|
|||||||
@@ -89,23 +89,23 @@ class RadarFragment : Fragment(R.layout.fragment_radar) {
|
|||||||
viewModel.transmitters.observe(viewLifecycleOwner) { list ->
|
viewModel.transmitters.observe(viewLifecycleOwner) { list ->
|
||||||
if (list.isNotEmpty()) {
|
if (list.isNotEmpty()) {
|
||||||
radioAdapter.submitList(list)
|
radioAdapter.submitList(list)
|
||||||
radarRecyclerMsg.text = getString(R.string.trans_data)
|
radarEmptyMsg.text = getString(R.string.radio_data)
|
||||||
} else {
|
} else {
|
||||||
radarRecyclerMsg.text = getString(R.string.trans_no_data)
|
radarEmptyMsg.text = getString(R.string.radio_no_data)
|
||||||
}
|
}
|
||||||
radarView?.invalidate()
|
radarView?.invalidate()
|
||||||
}
|
}
|
||||||
viewModel.orientation.observe(viewLifecycleOwner) { value ->
|
viewModel.orientation.observe(viewLifecycleOwner) { value ->
|
||||||
radarView?.setOrientation(value.first, value.second, value.third)
|
radarView?.setOrientation(value.first, value.second, value.third)
|
||||||
}
|
}
|
||||||
radarBack.setOnClickListener { findNavController().navigateUp() }
|
radarBtnBack.setOnClickListener { findNavController().navigateUp() }
|
||||||
radarMap.setOnClickListener {
|
radarBtnMap.setOnClickListener {
|
||||||
val direction = RadarFragmentDirections.actionGlobalMapFragment(pass.catNum)
|
val direction = RadarFragmentDirections.globalToMap(pass.catNum)
|
||||||
findNavController().navigate(direction)
|
findNavController().navigate(direction)
|
||||||
}
|
}
|
||||||
radarBtnNotify.isEnabled = false
|
radarBtnNotify.isEnabled = false
|
||||||
radarBtnSettings.setOnClickListener {
|
radarBtnSettings.setOnClickListener {
|
||||||
val direction = RadarFragmentDirections.actionGlobalSettingsFragment()
|
val direction = RadarFragmentDirections.globalToSettings()
|
||||||
findNavController().navigate(direction)
|
findNavController().navigate(direction)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,12 +56,12 @@ class RadioAdapter : RecyclerView.Adapter<RadioAdapter.TransHolder>() {
|
|||||||
RecyclerView.ViewHolder(binding.root) {
|
RecyclerView.ViewHolder(binding.root) {
|
||||||
|
|
||||||
private val divider = 1000000f
|
private val divider = 1000000f
|
||||||
private val stringYes = itemView.context.getString(R.string.yes)
|
private val stringYes = itemView.context.getString(R.string.radio_string_yes)
|
||||||
private val stringNo = itemView.context.getString(R.string.no)
|
private val stringNo = itemView.context.getString(R.string.radio_string_no)
|
||||||
private val link = itemView.context.getString(R.string.trans_link_low)
|
private val link = itemView.context.getString(R.string.radio_link_low)
|
||||||
private val linkNull = itemView.context.getString(R.string.trans_no_link)
|
private val linkNull = itemView.context.getString(R.string.radio_no_link)
|
||||||
private val mode = itemView.context.getString(R.string.trans_mode)
|
private val mode = itemView.context.getString(R.string.radio_mode)
|
||||||
private val inverted = itemView.context.getString(R.string.trans_inverted)
|
private val inverted = itemView.context.getString(R.string.radio_inverted)
|
||||||
|
|
||||||
fun bind(radio: SatRadio) {
|
fun bind(radio: SatRadio) {
|
||||||
binding.run {
|
binding.run {
|
||||||
|
|||||||
+2
-2
@@ -32,11 +32,11 @@ class LocatorDialog : AppCompatDialogFragment() {
|
|||||||
WindowManager.LayoutParams.WRAP_CONTENT
|
WindowManager.LayoutParams.WRAP_CONTENT
|
||||||
)
|
)
|
||||||
locatorEdit.setText(preferences.loadStationLocator())
|
locatorEdit.setText(preferences.loadStationLocator())
|
||||||
locatorPosBtn.setOnClickListener {
|
locatorBtnPos.setOnClickListener {
|
||||||
setNavResult("locator", locatorEdit.text.toString())
|
setNavResult("locator", locatorEdit.text.toString())
|
||||||
dismiss()
|
dismiss()
|
||||||
}
|
}
|
||||||
locatorNegBtn.setOnClickListener { dismiss() }
|
locatorBtnNeg.setOnClickListener { dismiss() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+11
-11
@@ -7,48 +7,48 @@ import android.view.ViewGroup
|
|||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import androidx.appcompat.app.AppCompatDialogFragment
|
import androidx.appcompat.app.AppCompatDialogFragment
|
||||||
import com.rtbishop.look4sat.R
|
import com.rtbishop.look4sat.R
|
||||||
import com.rtbishop.look4sat.databinding.DialogLocationBinding
|
import com.rtbishop.look4sat.databinding.DialogPositionBinding
|
||||||
import com.rtbishop.look4sat.domain.ISettings
|
import com.rtbishop.look4sat.domain.ISettings
|
||||||
import com.rtbishop.look4sat.presentation.setNavResult
|
import com.rtbishop.look4sat.presentation.setNavResult
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class LocationDialog : AppCompatDialogFragment() {
|
class PositionDialog : AppCompatDialogFragment() {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var preferences: ISettings
|
lateinit var preferences: ISettings
|
||||||
|
|
||||||
override fun onCreateView(inflater: LayoutInflater, group: ViewGroup?, state: Bundle?): View? {
|
override fun onCreateView(inflater: LayoutInflater, group: ViewGroup?, state: Bundle?): View? {
|
||||||
return inflater.inflate(R.layout.dialog_location, group, false)
|
return inflater.inflate(R.layout.dialog_position, group, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onViewCreated(view: View, state: Bundle?) {
|
override fun onViewCreated(view: View, state: Bundle?) {
|
||||||
super.onViewCreated(view, state)
|
super.onViewCreated(view, state)
|
||||||
DialogLocationBinding.bind(view).run {
|
DialogPositionBinding.bind(view).run {
|
||||||
dialog?.window?.setBackgroundDrawableResource(R.color.transparent)
|
dialog?.window?.setBackgroundDrawableResource(R.color.transparent)
|
||||||
dialog?.window?.setLayout(
|
dialog?.window?.setLayout(
|
||||||
(resources.displayMetrics.widthPixels * 0.94).toInt(),
|
(resources.displayMetrics.widthPixels * 0.94).toInt(),
|
||||||
WindowManager.LayoutParams.WRAP_CONTENT
|
WindowManager.LayoutParams.WRAP_CONTENT
|
||||||
)
|
)
|
||||||
val location = preferences.loadStationPosition()
|
val location = preferences.loadStationPosition()
|
||||||
locationLatEdit.setText(location.latitude.toString())
|
positionLatEdit.setText(location.latitude.toString())
|
||||||
locationLonEdit.setText(location.longitude.toString())
|
positionLonEdit.setText(location.longitude.toString())
|
||||||
locationPosBtn.setOnClickListener {
|
positionBtnPos.setOnClickListener {
|
||||||
val latitude = try {
|
val latitude = try {
|
||||||
locationLatEdit.text.toString().toDouble()
|
positionLatEdit.text.toString().toDouble()
|
||||||
} catch (exception: Exception) {
|
} catch (exception: Exception) {
|
||||||
180.0
|
180.0
|
||||||
}
|
}
|
||||||
val longitude = try {
|
val longitude = try {
|
||||||
locationLonEdit.text.toString().toDouble()
|
positionLonEdit.text.toString().toDouble()
|
||||||
} catch (exception: Exception) {
|
} catch (exception: Exception) {
|
||||||
400.0
|
400.0
|
||||||
}
|
}
|
||||||
setNavResult("location", Pair(latitude, longitude))
|
setNavResult("position", Pair(latitude, longitude))
|
||||||
dismiss()
|
dismiss()
|
||||||
}
|
}
|
||||||
locationNegBtn.setOnClickListener { dismiss() }
|
positionBtnNeg.setOnClickListener { dismiss() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+108
-109
@@ -52,7 +52,7 @@ class SettingsFragment : Fragment(R.layout.fragment_settings) {
|
|||||||
when {
|
when {
|
||||||
permissions[locationFine] == true -> viewModel.setPositionFromGps()
|
permissions[locationFine] == true -> viewModel.setPositionFromGps()
|
||||||
permissions[locationCoarse] == true -> viewModel.setPositionFromNet()
|
permissions[locationCoarse] == true -> viewModel.setPositionFromNet()
|
||||||
else -> showToast(getString(R.string.pref_pos_gps_error))
|
else -> showToast(getString(R.string.location_gps_error))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private val contentContract = ActivityResultContracts.GetContent()
|
private val contentContract = ActivityResultContracts.GetContent()
|
||||||
@@ -63,27 +63,28 @@ class SettingsFragment : Fragment(R.layout.fragment_settings) {
|
|||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
binding = FragmentSettingsBinding.bind(view)
|
binding = FragmentSettingsBinding.bind(view).apply {
|
||||||
setupComponents()
|
settingsBtnBack.setOnClickListener { findNavController().navigateUp() }
|
||||||
setupObservers()
|
settingsScroll.setOnScrollChangeListener(NestedScrollView.OnScrollChangeListener { _, _, y, _, newY ->
|
||||||
}
|
if (y > newY) settingsFab.hide() else settingsFab.show()
|
||||||
|
|
||||||
private fun setupComponents() {
|
|
||||||
binding.settingsScroll.apply {
|
|
||||||
setOnScrollChangeListener(NestedScrollView.OnScrollChangeListener { _, _, y, _, newY ->
|
|
||||||
if (y > newY) binding.settingsFab.hide() else binding.settingsFab.show()
|
|
||||||
})
|
})
|
||||||
|
settingsAbout.aboutVersion.text =
|
||||||
|
String.format(getString(R.string.app_version), BuildConfig.VERSION_NAME)
|
||||||
|
settingsBtnGithub.setOnClickListener {
|
||||||
|
gotoUrl("https://github.com/rt-bishop/Look4Sat/")
|
||||||
|
}
|
||||||
|
settingsFab.setOnClickListener {
|
||||||
|
gotoUrl("https://www.buymeacoffee.com/rtbishop")
|
||||||
|
}
|
||||||
|
settingsBtnFdroid.setOnClickListener {
|
||||||
|
gotoUrl("https://f-droid.org/en/packages/com.rtbishop.look4sat/")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
binding.settingsBack.setOnClickListener { findNavController().navigateUp() }
|
|
||||||
setupAboutCard()
|
|
||||||
setupDataCard()
|
|
||||||
setupLocationCard()
|
setupLocationCard()
|
||||||
setupTrackingCard()
|
setupDataCard()
|
||||||
|
setupRemoteCard()
|
||||||
setupOtherCard()
|
setupOtherCard()
|
||||||
setupWarrantyCard()
|
setupOutroCard()
|
||||||
}
|
|
||||||
|
|
||||||
private fun setupObservers() {
|
|
||||||
viewModel.stationPosition.asLiveData().observe(viewLifecycleOwner) { stationPos ->
|
viewModel.stationPosition.asLiveData().observe(viewLifecycleOwner) { stationPos ->
|
||||||
stationPos?.let { handleStationPosition(stationPos) }
|
stationPos?.let { handleStationPosition(stationPos) }
|
||||||
}
|
}
|
||||||
@@ -92,140 +93,138 @@ class SettingsFragment : Fragment(R.layout.fragment_settings) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupAboutCard() {
|
|
||||||
binding.settingsInfo.aboutVersion.text =
|
|
||||||
String.format(getString(R.string.app_version), BuildConfig.VERSION_NAME)
|
|
||||||
binding.settingsGithubBtn.setOnClickListener {
|
|
||||||
gotoUrl("https://github.com/rt-bishop/Look4Sat/")
|
|
||||||
}
|
|
||||||
binding.settingsFab.setOnClickListener {
|
|
||||||
gotoUrl("https://www.buymeacoffee.com/rtbishop")
|
|
||||||
}
|
|
||||||
binding.settingsFdroidBtn.setOnClickListener {
|
|
||||||
gotoUrl("https://f-droid.org/en/packages/com.rtbishop.look4sat/")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setupLocationCard() {
|
private fun setupLocationCard() {
|
||||||
setPositionText(viewModel.getStationPosition())
|
binding.run {
|
||||||
binding.settingsLocation.positionBtnGps.setOnClickListener {
|
setPositionText(viewModel.getStationPosition())
|
||||||
locationRequest.launch(arrayOf(locationFine, locationCoarse))
|
settingsLocation.locationBtnGps.setOnClickListener {
|
||||||
}
|
locationRequest.launch(arrayOf(locationFine, locationCoarse))
|
||||||
binding.settingsLocation.positionBtnManual.setOnClickListener {
|
}
|
||||||
val action = SettingsFragmentDirections.actionPrefsToLocation()
|
settingsLocation.locationBtnManual.setOnClickListener {
|
||||||
findNavController().navigate(action)
|
val action = SettingsFragmentDirections.globalToPosition()
|
||||||
}
|
findNavController().navigate(action)
|
||||||
binding.settingsLocation.positionBtnQth.setOnClickListener {
|
}
|
||||||
val action = SettingsFragmentDirections.actionPrefsToLocator()
|
settingsLocation.locationBtnQth.setOnClickListener {
|
||||||
findNavController().navigate(action)
|
val action = SettingsFragmentDirections.globalToLocator()
|
||||||
}
|
findNavController().navigate(action)
|
||||||
getNavResult<Pair<Double, Double>>(R.id.nav_settings, "location") { location ->
|
}
|
||||||
viewModel.setStationPosition(location.first, location.second)
|
getNavResult<Pair<Double, Double>>(R.id.nav_settings, "position") { position ->
|
||||||
}
|
viewModel.setStationPosition(position.first, position.second)
|
||||||
getNavResult<String>(R.id.nav_settings, "locator") { locator ->
|
}
|
||||||
viewModel.setPositionFromQth(locator)
|
getNavResult<String>(R.id.nav_settings, "locator") { locator ->
|
||||||
|
viewModel.setPositionFromQth(locator)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupDataCard() {
|
private fun setupDataCard() {
|
||||||
binding.settingsData.dataBtnFile.setOnClickListener { contentRequest.launch("*/*") }
|
binding.run {
|
||||||
binding.settingsData.dataBtnWeb.setOnClickListener {
|
settingsData.dataBtnFile.setOnClickListener { contentRequest.launch("*/*") }
|
||||||
val action = SettingsFragmentDirections.actionPrefsToSources()
|
settingsData.dataBtnWeb.setOnClickListener {
|
||||||
findNavController().navigate(action)
|
val action = SettingsFragmentDirections.settingsToSources()
|
||||||
}
|
findNavController().navigate(action)
|
||||||
binding.settingsData.dataBtnClear.setOnClickListener { viewModel.clearData() }
|
}
|
||||||
viewModel.entriesTotal.observe(viewLifecycleOwner) { number ->
|
settingsData.dataBtnClear.setOnClickListener { viewModel.clearData() }
|
||||||
val entriesFormat = getString(R.string.fmt_entries)
|
viewModel.entriesTotal.observe(viewLifecycleOwner) { number ->
|
||||||
binding.settingsData.dataEntries.text = String.format(entriesFormat, number)
|
val entriesFormat = getString(R.string.data_entries)
|
||||||
}
|
settingsData.dataEntries.text = String.format(entriesFormat, number)
|
||||||
viewModel.radiosTotal.observe(viewLifecycleOwner) { number ->
|
}
|
||||||
val radiosFormat = getString(R.string.fmt_radios)
|
viewModel.radiosTotal.observe(viewLifecycleOwner) { number ->
|
||||||
binding.settingsData.dataRadios.text = String.format(radiosFormat, number)
|
val radiosFormat = getString(R.string.data_radios)
|
||||||
}
|
settingsData.dataRadios.text = String.format(radiosFormat, number)
|
||||||
getNavResult<List<String>>(R.id.nav_settings, "sources") { sources ->
|
}
|
||||||
viewModel.updateDataFromWeb(sources)
|
getNavResult<List<String>>(R.id.nav_settings, "sources") { sources ->
|
||||||
|
viewModel.updateDataFromWeb(sources)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupTrackingCard() {
|
private fun setupRemoteCard() {
|
||||||
binding.settingsTracking.remoteSwitch.apply {
|
binding.run {
|
||||||
isChecked = viewModel.getRotatorEnabled()
|
settingsRemote.remoteSwitch.apply {
|
||||||
binding.settingsTracking.remoteIp.isEnabled = isChecked
|
isChecked = viewModel.getRotatorEnabled()
|
||||||
binding.settingsTracking.remoteIpEdit.setText(viewModel.getRotatorServer())
|
settingsRemote.remoteIp.isEnabled = isChecked
|
||||||
binding.settingsTracking.remotePort.isEnabled = isChecked
|
settingsRemote.remoteIpEdit.setText(viewModel.getRotatorServer())
|
||||||
binding.settingsTracking.remotePortEdit.setText(viewModel.getRotatorPort())
|
settingsRemote.remotePort.isEnabled = isChecked
|
||||||
setOnCheckedChangeListener { _, isChecked ->
|
settingsRemote.remotePortEdit.setText(viewModel.getRotatorPort())
|
||||||
viewModel.setRotatorEnabled(isChecked)
|
setOnCheckedChangeListener { _, isChecked ->
|
||||||
binding.settingsTracking.remoteIp.isEnabled = isChecked
|
viewModel.setRotatorEnabled(isChecked)
|
||||||
binding.settingsTracking.remotePort.isEnabled = isChecked
|
settingsRemote.remoteIp.isEnabled = isChecked
|
||||||
|
settingsRemote.remotePort.isEnabled = isChecked
|
||||||
|
}
|
||||||
|
}
|
||||||
|
settingsRemote.remoteIpEdit.doOnTextChanged { text, _, _, _ ->
|
||||||
|
if (text.toString().isValidIPv4()) viewModel.setRotatorServer(text.toString())
|
||||||
|
}
|
||||||
|
settingsRemote.remotePortEdit.doOnTextChanged { text, _, _, _ ->
|
||||||
|
if (text.toString().isValidPort()) viewModel.setRotatorPort(text.toString())
|
||||||
}
|
}
|
||||||
}
|
|
||||||
binding.settingsTracking.remoteIpEdit.doOnTextChanged { text, _, _, _ ->
|
|
||||||
if (text.toString().isValidIPv4()) viewModel.setRotatorServer(text.toString())
|
|
||||||
}
|
|
||||||
binding.settingsTracking.remotePortEdit.doOnTextChanged { text, _, _, _ ->
|
|
||||||
if (text.toString().isValidPort()) viewModel.setRotatorPort(text.toString())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupOtherCard() {
|
private fun setupOtherCard() {
|
||||||
binding.settingsOther.otherSwitchUtc.apply {
|
binding.run {
|
||||||
isChecked = viewModel.getUseUTC()
|
settingsOther.otherSwitchUtc.apply {
|
||||||
setOnCheckedChangeListener { _, isChecked -> viewModel.setUseUTC(isChecked) }
|
isChecked = viewModel.getUseUTC()
|
||||||
}
|
setOnCheckedChangeListener { _, isChecked -> viewModel.setUseUTC(isChecked) }
|
||||||
binding.settingsOther.otherSwitchSweep.apply {
|
}
|
||||||
isChecked = viewModel.getShowSweep()
|
settingsOther.otherSwitchSweep.apply {
|
||||||
setOnCheckedChangeListener { _, isChecked -> viewModel.setShowSweep(isChecked) }
|
isChecked = viewModel.getShowSweep()
|
||||||
}
|
setOnCheckedChangeListener { _, isChecked -> viewModel.setShowSweep(isChecked) }
|
||||||
binding.settingsOther.otherSwitchSensors.apply {
|
}
|
||||||
isChecked = viewModel.getUseCompass()
|
settingsOther.otherSwitchSensors.apply {
|
||||||
setOnCheckedChangeListener { _, isChecked -> viewModel.setUseCompass(isChecked) }
|
isChecked = viewModel.getUseCompass()
|
||||||
|
setOnCheckedChangeListener { _, isChecked -> viewModel.setUseCompass(isChecked) }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupWarrantyCard() {
|
private fun setupOutroCard() {
|
||||||
binding.settingsWarranty.outroThanks.movementMethod = LinkMovementMethod.getInstance()
|
binding.run {
|
||||||
binding.settingsWarranty.outroLicense.movementMethod = LinkMovementMethod.getInstance()
|
settingsOutro.outroThanks.movementMethod = LinkMovementMethod.getInstance()
|
||||||
}
|
settingsOutro.outroLicense.movementMethod = LinkMovementMethod.getInstance()
|
||||||
|
}
|
||||||
private fun setPositionText(geoPos: GeoPos) {
|
|
||||||
val latFormat = getString(R.string.location_lat)
|
|
||||||
val lonFormat = getString(R.string.location_lon)
|
|
||||||
binding.settingsLocation.positionLat.text = String.format(latFormat, geoPos.latitude)
|
|
||||||
binding.settingsLocation.positionLon.text = String.format(lonFormat, geoPos.longitude)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleStationPosition(pos: DataState<GeoPos>) {
|
private fun handleStationPosition(pos: DataState<GeoPos>) {
|
||||||
when (pos) {
|
when (pos) {
|
||||||
is DataState.Success -> {
|
is DataState.Success -> {
|
||||||
setPositionText(pos.data)
|
setPositionText(pos.data)
|
||||||
binding.settingsLocation.positionProgress.isIndeterminate = false
|
binding.settingsLocation.locationProgress.isIndeterminate = false
|
||||||
viewModel.setPositionHandled()
|
viewModel.setPositionHandled()
|
||||||
showToast(getString(R.string.pref_pos_success))
|
showToast(getString(R.string.location_success))
|
||||||
}
|
}
|
||||||
is DataState.Error -> {
|
is DataState.Error -> {
|
||||||
binding.settingsLocation.positionProgress.isIndeterminate = false
|
binding.settingsLocation.locationProgress.isIndeterminate = false
|
||||||
viewModel.setPositionHandled()
|
viewModel.setPositionHandled()
|
||||||
showToast(pos.message.toString())
|
showToast(pos.message.toString())
|
||||||
}
|
}
|
||||||
DataState.Loading -> {
|
DataState.Loading -> {
|
||||||
binding.settingsLocation.positionProgress.isIndeterminate = true
|
binding.settingsLocation.locationProgress.isIndeterminate = true
|
||||||
}
|
}
|
||||||
DataState.Handled -> {}
|
DataState.Handled -> {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setPositionText(geoPos: GeoPos) {
|
||||||
|
binding.run {
|
||||||
|
val latFormat = getString(R.string.location_lat)
|
||||||
|
val lonFormat = getString(R.string.location_lon)
|
||||||
|
settingsLocation.locationLat.text = String.format(latFormat, geoPos.latitude)
|
||||||
|
settingsLocation.locationLon.text = String.format(lonFormat, geoPos.longitude)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun handleSatState(state: DataState<Long>) {
|
private fun handleSatState(state: DataState<Long>) {
|
||||||
when (state) {
|
when (state) {
|
||||||
is DataState.Success -> {
|
is DataState.Success -> {
|
||||||
binding.settingsData.dataProgress.isIndeterminate = false
|
binding.settingsData.dataProgress.isIndeterminate = false
|
||||||
viewModel.setUpdateHandled()
|
viewModel.setUpdateHandled()
|
||||||
showToast("Data updated successfully")
|
showToast(getString(R.string.data_success))
|
||||||
}
|
}
|
||||||
is DataState.Error -> {
|
is DataState.Error -> {
|
||||||
binding.settingsData.dataProgress.isIndeterminate = false
|
binding.settingsData.dataProgress.isIndeterminate = false
|
||||||
viewModel.setUpdateHandled()
|
viewModel.setUpdateHandled()
|
||||||
showToast(state.message.toString())
|
showToast(getString(R.string.data_error))
|
||||||
}
|
}
|
||||||
is DataState.Loading -> {
|
is DataState.Loading -> {
|
||||||
binding.settingsData.dataProgress.isIndeterminate = true
|
binding.settingsData.dataProgress.isIndeterminate = true
|
||||||
|
|||||||
File renamed without changes.
@@ -1,11 +0,0 @@
|
|||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:width="24dp"
|
|
||||||
android:height="24dp"
|
|
||||||
android:autoMirrored="true"
|
|
||||||
android:tint="?attr/colorControlNormal"
|
|
||||||
android:viewportWidth="24"
|
|
||||||
android:viewportHeight="24">
|
|
||||||
<path
|
|
||||||
android:fillColor="@android:color/white"
|
|
||||||
android:pathData="M6,2c-1.1,0 -1.99,0.9 -1.99,2L4,20c0,1.1 0.89,2 1.99,2L18,22c1.1,0 2,-0.9 2,-2L20,8l-6,-6L6,2zM13,9L13,3.5L18.5,9L13,9z" />
|
|
||||||
</vector>
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:width="24dp"
|
|
||||||
android:height="24dp"
|
|
||||||
android:autoMirrored="true"
|
|
||||||
android:tint="?attr/colorControlNormal"
|
|
||||||
android:viewportWidth="24"
|
|
||||||
android:viewportHeight="24">
|
|
||||||
<path
|
|
||||||
android:fillColor="@android:color/white"
|
|
||||||
android:pathData="M10,18h4v-2h-4v2zM3,6v2h18L21,6L3,6zM6,13h12v-2L6,11v2z" />
|
|
||||||
</vector>
|
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:autoMirrored="true"
|
||||||
|
android:tint="?attr/colorControlNormal"
|
||||||
|
android:viewportWidth="128"
|
||||||
|
android:viewportHeight="128">
|
||||||
|
<path
|
||||||
|
android:fillColor="@android:color/white"
|
||||||
|
android:pathData="m105.138,114.121a2.864,2.864 90,0 0,1.701 -0.85l19.334,-19.331a2.864,2.864 90,0 0,-0 -4.027l-26.584,-26.625a2.864,2.864 90,0 0,-1.835 -0.805l-7.922,-0.626 5.773,-5.772a2.864,2.864 90,0 0,-0 -4.027l-19.602,-19.644a2.864,2.864 90,0 0,-4.073 -0l-5.773,5.772 -0.627,-7.92a2.864,2.864 90,0 0,-0.805 -1.835l-26.629,-26.58a2.864,2.864 90,0 0,-4.073 -0l-19.289,19.286a2.864,2.864 90,0 0,-0 4.072l26.584,26.625a2.864,2.864 90,0 0,1.835 0.805l7.922,0.626 -5.773,5.772a2.864,2.864 90,0 0,-0 4.072l19.603,19.599a2.864,2.864 90,0 0,4.073 -0l5.773,-5.772 0.626,7.92a2.864,2.864 90,0 0,0.806 1.835l26.629,26.58a2.864,2.864 90,0 0,2.059 0.85,2.864 2.864,90 0,0 0.269,-0zM104.825,107.23 L80.97,83.38 80.165,72.685 85.58,67.271 96.276,68.121 120.13,91.926zM55.326,47.85 L44.629,47 20.775,23.194 36.081,7.891 59.891,31.741 60.741,42.436z" />
|
||||||
|
<path
|
||||||
|
android:fillColor="@android:color/white"
|
||||||
|
android:pathData="m62.653,115.806a2.864,2.864 90,1 0,-0 -5.727c-11.457,-0 -22.876,-4.351 -31.634,-13.107 -8.741,-8.74 -13.095,-20.174 -13.095,-31.614a2.864,2.864 90,1 0,-5.728 -0c-0,12.897 4.935,25.829 14.773,35.664 9.85,9.848 22.772,14.785 35.684,14.785z" />
|
||||||
|
<path
|
||||||
|
android:fillColor="@android:color/white"
|
||||||
|
android:pathData="m62.653,127a2.864,2.864 90,1 0,-0 -5.727c-14.325,-0 -28.612,-5.441 -39.547,-16.375 -10.935,-10.933 -16.378,-25.233 -16.378,-39.541a2.864,2.864 90,1 0,-5.728 -0c-0,15.763 6.025,31.562 18.055,43.59 12.029,12.028 27.818,18.052 43.597,18.052z" />
|
||||||
|
<path
|
||||||
|
android:fillColor="@android:color/white"
|
||||||
|
android:pathData="m62.653,104.698a2.864,2.864 90,1 0,-0 -5.727c-8.62,-0 -17.201,-3.263 -23.778,-9.839 -6.577,-6.576 -9.855,-15.174 -9.855,-23.774a2.864,2.864 90,1 0,-5.728 -0c-0,10.061 3.861,20.153 11.533,27.824 7.672,7.671 17.756,11.517 27.829,11.517z" />
|
||||||
|
<path
|
||||||
|
android:fillColor="@android:color/white"
|
||||||
|
android:pathData="m62.653,93.475a2.864,2.864 90,1 0,-0 -5.727c-5.737,-0 -11.453,-2.174 -15.836,-6.557 -4.384,-4.383 -6.558,-10.098 -6.558,-15.834a2.864,2.864 90,1 0,-5.728 -0c-0,7.192 2.757,14.406 8.236,19.883 5.479,5.478 12.693,8.234 19.887,8.234z" />
|
||||||
|
</vector>
|
||||||
File renamed without changes.
@@ -1,11 +0,0 @@
|
|||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:width="24dp"
|
|
||||||
android:height="24dp"
|
|
||||||
android:autoMirrored="true"
|
|
||||||
android:tint="?attr/colorControlNormal"
|
|
||||||
android:viewportWidth="24"
|
|
||||||
android:viewportHeight="24">
|
|
||||||
<path
|
|
||||||
android:fillColor="@android:color/white"
|
|
||||||
android:pathData="M21.41,11.58l-9,-9C12.05,2.22 11.55,2 11,2H4c-1.1,0 -2,0.9 -2,2v7c0,0.55 0.22,1.05 0.59,1.42l9,9c0.36,0.36 0.86,0.58 1.41,0.58 0.55,0 1.05,-0.22 1.41,-0.59l7,-7c0.37,-0.36 0.59,-0.86 0.59,-1.41 0,-0.55 -0.23,-1.06 -0.59,-1.42zM5.5,7C4.67,7 4,6.33 4,5.5S4.67,4 5.5,4 7,4.67 7,5.5 6.33,7 5.5,7z" />
|
|
||||||
</vector>
|
|
||||||
@@ -7,17 +7,8 @@
|
|||||||
android:viewportHeight="128">
|
android:viewportHeight="128">
|
||||||
<path
|
<path
|
||||||
android:fillColor="@android:color/white"
|
android:fillColor="@android:color/white"
|
||||||
android:pathData="m105.138,114.121a2.864,2.864 90,0 0,1.701 -0.85l19.334,-19.331a2.864,2.864 90,0 0,-0 -4.027l-26.584,-26.625a2.864,2.864 90,0 0,-1.835 -0.805l-7.922,-0.626 5.773,-5.772a2.864,2.864 90,0 0,-0 -4.027l-19.602,-19.644a2.864,2.864 90,0 0,-4.073 -0l-5.773,5.772 -0.627,-7.92a2.864,2.864 90,0 0,-0.805 -1.835l-26.629,-26.58a2.864,2.864 90,0 0,-4.073 -0l-19.289,19.286a2.864,2.864 90,0 0,-0 4.072l26.584,26.625a2.864,2.864 90,0 0,1.835 0.805l7.922,0.626 -5.773,5.772a2.864,2.864 90,0 0,-0 4.072l19.603,19.599a2.864,2.864 90,0 0,4.073 -0l5.773,-5.772 0.626,7.92a2.864,2.864 90,0 0,0.806 1.835l26.629,26.58a2.864,2.864 90,0 0,2.059 0.85,2.864 2.864,90 0,0 0.269,-0zM104.825,107.23 L80.97,83.38 80.165,72.685 85.58,67.271 96.276,68.121 120.13,91.926zM55.326,47.85 L44.629,47 20.775,23.194 36.081,7.891 59.891,31.741 60.741,42.436z" />
|
android:pathData="m96.642,31.504c7.911,7.997 17.143,13.584 25.365,15.581l1.754,-3.997C123.78,43.048 123.786,43.005 123.802,42.965 125.834,38.995 127,34.495 127,29.715 127,13.881 114.379,1 98.867,1c-5.125,0 -9.92,1.429 -14.064,3.884l-3.398,1.598c0.08,0.306 0.133,0.599 0.221,0.91 2.32,8.104 7.652,16.667 15.016,24.112z" />
|
||||||
<path
|
<path
|
||||||
android:fillColor="@android:color/white"
|
android:fillColor="@android:color/white"
|
||||||
android:pathData="m62.653,115.806a2.864,2.864 90,1 0,-0 -5.727c-11.457,-0 -22.876,-4.351 -31.634,-13.107 -8.741,-8.74 -13.095,-20.174 -13.095,-31.614a2.864,2.864 90,1 0,-5.728 -0c-0,12.897 4.935,25.829 14.773,35.664 9.85,9.848 22.772,14.785 35.684,14.785z" />
|
android:pathData="M93.876,34.3C86.053,26.391 80.369,17.225 77.87,8.49 77.84,8.385 77.818,8.285 77.788,8.181L2.629,43.513c-1.404,0.66 -2.019,2.358 -1.372,3.791 0.472,1.046 1.485,1.663 2.545,1.663 0.392,0 0.79,-0.084 1.169,-0.263L74.045,16.235c-1.873,3.578 -2.997,7.611 -3.228,11.885L35.566,51.732c-1.294,0.866 -1.653,2.638 -0.805,3.957 0.538,0.836 1.431,1.29 2.344,1.29 0.526,0 1.06,-0.151 1.533,-0.469L71.189,34.707c1.4,8.11 6.135,15.044 12.715,19.285l-54.945,68.337c-0.981,1.22 -0.808,3.021 0.388,4.023 0.521,0.437 1.149,0.649 1.775,0.649 0.809,0 1.611,-0.357 2.166,-1.045L89.056,56.595c3.06,1.168 6.357,1.838 9.811,1.838 4.932,0 9.566,-1.312 13.601,-3.597L84.602,118.323c-0.633,1.44 0,3.131 1.41,3.777 0.372,0.17 0.76,0.25 1.144,0.25 1.07,0 2.092,-0.629 2.556,-1.691L120.402,50.739C111.642,48.416 102.042,42.555 93.876,34.3Z" />
|
||||||
<path
|
|
||||||
android:fillColor="@android:color/white"
|
|
||||||
android:pathData="m62.653,127a2.864,2.864 90,1 0,-0 -5.727c-14.325,-0 -28.612,-5.441 -39.547,-16.375 -10.935,-10.933 -16.378,-25.233 -16.378,-39.541a2.864,2.864 90,1 0,-5.728 -0c-0,15.763 6.025,31.562 18.055,43.59 12.029,12.028 27.818,18.052 43.597,18.052z" />
|
|
||||||
<path
|
|
||||||
android:fillColor="@android:color/white"
|
|
||||||
android:pathData="m62.653,104.698a2.864,2.864 90,1 0,-0 -5.727c-8.62,-0 -17.201,-3.263 -23.778,-9.839 -6.577,-6.576 -9.855,-15.174 -9.855,-23.774a2.864,2.864 90,1 0,-5.728 -0c-0,10.061 3.861,20.153 11.533,27.824 7.672,7.671 17.756,11.517 27.829,11.517z" />
|
|
||||||
<path
|
|
||||||
android:fillColor="@android:color/white"
|
|
||||||
android:pathData="m62.653,93.475a2.864,2.864 90,1 0,-0 -5.727c-5.737,-0 -11.453,-2.174 -15.836,-6.557 -4.384,-4.383 -6.558,-10.098 -6.558,-15.834a2.864,2.864 90,1 0,-5.728 -0c-0,7.192 2.757,14.406 8.236,19.883 5.479,5.478 12.693,8.234 19.887,8.234z" />
|
|
||||||
</vector>
|
</vector>
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:width="24dp"
|
|
||||||
android:height="24dp"
|
|
||||||
android:autoMirrored="true"
|
|
||||||
android:tint="?attr/colorControlNormal"
|
|
||||||
android:viewportWidth="128"
|
|
||||||
android:viewportHeight="128">
|
|
||||||
<path
|
|
||||||
android:fillColor="@android:color/white"
|
|
||||||
android:pathData="m96.642,31.504c7.911,7.997 17.143,13.584 25.365,15.581l1.754,-3.997C123.78,43.048 123.786,43.005 123.802,42.965 125.834,38.995 127,34.495 127,29.715 127,13.881 114.379,1 98.867,1c-5.125,0 -9.92,1.429 -14.064,3.884l-3.398,1.598c0.08,0.306 0.133,0.599 0.221,0.91 2.32,8.104 7.652,16.667 15.016,24.112z" />
|
|
||||||
<path
|
|
||||||
android:fillColor="@android:color/white"
|
|
||||||
android:pathData="M93.876,34.3C86.053,26.391 80.369,17.225 77.87,8.49 77.84,8.385 77.818,8.285 77.788,8.181L2.629,43.513c-1.404,0.66 -2.019,2.358 -1.372,3.791 0.472,1.046 1.485,1.663 2.545,1.663 0.392,0 0.79,-0.084 1.169,-0.263L74.045,16.235c-1.873,3.578 -2.997,7.611 -3.228,11.885L35.566,51.732c-1.294,0.866 -1.653,2.638 -0.805,3.957 0.538,0.836 1.431,1.29 2.344,1.29 0.526,0 1.06,-0.151 1.533,-0.469L71.189,34.707c1.4,8.11 6.135,15.044 12.715,19.285l-54.945,68.337c-0.981,1.22 -0.808,3.021 0.388,4.023 0.521,0.437 1.149,0.649 1.775,0.649 0.809,0 1.611,-0.357 2.166,-1.045L89.056,56.595c3.06,1.168 6.357,1.838 9.811,1.838 4.932,0 9.566,-1.312 13.601,-3.597L84.602,118.323c-0.633,1.44 0,3.131 1.41,3.777 0.372,0.17 0.76,0.25 1.144,0.25 1.07,0 2.092,-0.629 2.556,-1.691L120.402,50.739C111.642,48.416 102.042,42.555 93.876,34.3Z" />
|
|
||||||
</vector>
|
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
android:layout_marginStart="8dp"
|
android:layout_marginStart="8dp"
|
||||||
android:layout_marginTop="4dp"
|
android:layout_marginTop="4dp"
|
||||||
android:contentDescription="@string/app_name"
|
android:contentDescription="@string/app_name"
|
||||||
android:src="@drawable/ic_sputnik"
|
android:src="@drawable/ic_satellite"
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/about_version"
|
app:layout_constraintBottom_toBottomOf="@+id/about_version"
|
||||||
app:layout_constraintDimensionRatio="h,1:1"
|
app:layout_constraintDimensionRatio="h,1:1"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/about_title"
|
app:layout_constraintEnd_toStartOf="@+id/about_title"
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="12dp"
|
android:layout_marginStart="12dp"
|
||||||
android:layout_marginTop="10dp"
|
android:layout_marginTop="10dp"
|
||||||
android:text="@string/update_title"
|
android:text="@string/data_title"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="6dp"
|
android:layout_marginTop="6dp"
|
||||||
android:text="@string/fmt_entries"
|
android:text="@string/data_entries"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/data_radios"
|
app:layout_constraintEnd_toStartOf="@+id/data_radios"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintHorizontal_chainStyle="spread_inside"
|
app:layout_constraintHorizontal_chainStyle="spread_inside"
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
style="@style/SettingsText"
|
style="@style/SettingsText"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/fmt_radios"
|
android:text="@string/data_radios"
|
||||||
app:layout_constraintBaseline_toBaselineOf="@+id/data_entries"
|
app:layout_constraintBaseline_toBaselineOf="@+id/data_entries"
|
||||||
app:layout_constraintEnd_toEndOf="@+id/data_progress"
|
app:layout_constraintEnd_toEndOf="@+id/data_progress"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
|
|||||||
+23
-26
@@ -8,7 +8,7 @@
|
|||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/position_title"
|
android:id="@+id/location_title"
|
||||||
style="@style/SettingsTitle"
|
style="@style/SettingsTitle"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -19,83 +19,80 @@
|
|||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
<ProgressBar
|
<ProgressBar
|
||||||
android:id="@+id/position_progress"
|
android:id="@+id/location_progress"
|
||||||
style="?android:attr/progressBarStyleHorizontal"
|
style="?android:attr/progressBarStyleHorizontal"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:layout_marginStart="8dp"
|
android:layout_marginStart="8dp"
|
||||||
android:layout_marginEnd="12dp"
|
android:layout_marginEnd="12dp"
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/position_title"
|
app:layout_constraintBottom_toBottomOf="@+id/location_title"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toEndOf="@+id/position_title"
|
app:layout_constraintStart_toEndOf="@+id/location_title"
|
||||||
app:layout_constraintTop_toTopOf="@+id/position_title" />
|
app:layout_constraintTop_toTopOf="@+id/location_title" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/position_lat"
|
android:id="@+id/location_lat"
|
||||||
style="@style/SettingsText"
|
style="@style/SettingsText"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="6dp"
|
android:layout_marginTop="6dp"
|
||||||
android:text="@string/location_lat"
|
android:text="@string/location_lat"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/position_lon"
|
app:layout_constraintEnd_toStartOf="@+id/location_lon"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintHorizontal_chainStyle="spread_inside"
|
app:layout_constraintHorizontal_chainStyle="spread_inside"
|
||||||
app:layout_constraintStart_toStartOf="@+id/position_title"
|
app:layout_constraintStart_toStartOf="@+id/location_title"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/position_title" />
|
app:layout_constraintTop_toBottomOf="@+id/location_title" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/position_lon"
|
android:id="@+id/location_lon"
|
||||||
style="@style/SettingsText"
|
style="@style/SettingsText"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/location_lon"
|
android:text="@string/location_lon"
|
||||||
app:layout_constraintBaseline_toBaselineOf="@+id/position_lat"
|
app:layout_constraintBaseline_toBaselineOf="@+id/location_lat"
|
||||||
app:layout_constraintEnd_toEndOf="@+id/position_progress"
|
app:layout_constraintEnd_toEndOf="@+id/location_progress"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintStart_toEndOf="@+id/position_lat" />
|
app:layout_constraintStart_toEndOf="@+id/location_lat" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/position_btn_gps"
|
android:id="@+id/location_btn_gps"
|
||||||
style="@style/NormalButton"
|
style="@style/NormalButton"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="6dp"
|
android:layout_marginStart="6dp"
|
||||||
android:layout_marginTop="6dp"
|
android:layout_marginTop="6dp"
|
||||||
android:layout_marginBottom="6dp"
|
android:layout_marginBottom="6dp"
|
||||||
android:drawableStart="@drawable/ic_gps"
|
|
||||||
android:text="@string/btn_gps"
|
android:text="@string/btn_gps"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/position_btn_manual"
|
app:layout_constraintEnd_toStartOf="@+id/location_btn_manual"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/position_lat" />
|
app:layout_constraintTop_toBottomOf="@+id/location_lat" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/position_btn_manual"
|
android:id="@+id/location_btn_manual"
|
||||||
style="@style/NormalButton"
|
style="@style/NormalButton"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="2dp"
|
android:layout_marginStart="2dp"
|
||||||
android:layout_marginEnd="2dp"
|
android:layout_marginEnd="2dp"
|
||||||
android:drawableStart="@drawable/ic_gps"
|
|
||||||
android:text="@string/btn_manual"
|
android:text="@string/btn_manual"
|
||||||
app:layout_constraintBaseline_toBaselineOf="@+id/position_btn_gps"
|
app:layout_constraintBaseline_toBaselineOf="@+id/location_btn_gps"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/position_btn_qth"
|
app:layout_constraintEnd_toStartOf="@+id/location_btn_qth"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintStart_toEndOf="@+id/position_btn_gps" />
|
app:layout_constraintStart_toEndOf="@+id/location_btn_gps" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/position_btn_qth"
|
android:id="@+id/location_btn_qth"
|
||||||
style="@style/NormalButton"
|
style="@style/NormalButton"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginEnd="6dp"
|
android:layout_marginEnd="6dp"
|
||||||
android:drawableStart="@drawable/ic_qth"
|
|
||||||
android:text="@string/btn_qth"
|
android:text="@string/btn_qth"
|
||||||
app:layout_constraintBaseline_toBaselineOf="@+id/position_btn_gps"
|
app:layout_constraintBaseline_toBaselineOf="@+id/location_btn_gps"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintStart_toEndOf="@+id/position_btn_manual" />
|
app:layout_constraintStart_toEndOf="@+id/location_btn_manual" />
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
android:layout_marginStart="12dp"
|
android:layout_marginStart="12dp"
|
||||||
android:layout_marginTop="10dp"
|
android:layout_marginTop="10dp"
|
||||||
android:layout_marginEnd="12dp"
|
android:layout_marginEnd="12dp"
|
||||||
android:text="@string/tracking_title"
|
android:text="@string/remote_title"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:minHeight="42dp"
|
android:minHeight="42dp"
|
||||||
android:text="@string/tracking_switch"
|
android:text="@string/remote_switch"
|
||||||
app:layout_constraintEnd_toEndOf="@+id/remote_title"
|
app:layout_constraintEnd_toEndOf="@+id/remote_title"
|
||||||
app:layout_constraintStart_toStartOf="@+id/remote_title"
|
app:layout_constraintStart_toStartOf="@+id/remote_title"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/remote_title"
|
app:layout_constraintTop_toBottomOf="@+id/remote_title"
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
android:id="@+id/remote_ip_edit"
|
android:id="@+id/remote_ip_edit"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:hint="@string/tracking_ip_hint"
|
android:hint="@string/remote_ip_hint"
|
||||||
android:textColorHint="@color/textMain" />
|
android:textColorHint="@color/textMain" />
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
@@ -66,7 +66,7 @@
|
|||||||
android:id="@+id/remote_port_edit"
|
android:id="@+id/remote_port_edit"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:hint="@string/tracking_port_hint"
|
android:hint="@string/remote_port_hint"
|
||||||
android:textColorHint="@color/textMain" />
|
android:textColorHint="@color/textMain" />
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|||||||
@@ -16,11 +16,11 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="4dp"
|
android:layout_marginTop="4dp"
|
||||||
android:minHeight="48dp"
|
android:minHeight="48dp"
|
||||||
android:text="@string/dialog_filter_passes"
|
android:text="@string/filter_title"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/filter_hours_text"
|
app:layout_constraintBottom_toTopOf="@+id/filter_hours_text"
|
||||||
app:layout_constraintEnd_toEndOf="@+id/filter_pos_btn"
|
app:layout_constraintEnd_toEndOf="@+id/filter_btn_pos"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintStart_toStartOf="@+id/filter_neg_btn"
|
app:layout_constraintStart_toStartOf="@+id/filter_btn_neg"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="8dp"
|
android:layout_marginStart="8dp"
|
||||||
android:layout_marginEnd="8dp"
|
android:layout_marginEnd="8dp"
|
||||||
android:text="@string/pref_hours_ahead_summary"
|
android:text="@string/filter_hours_text"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/filter_hours_layout"
|
app:layout_constraintBottom_toTopOf="@+id/filter_hours_layout"
|
||||||
app:layout_constraintEnd_toEndOf="@+id/filter_title"
|
app:layout_constraintEnd_toEndOf="@+id/filter_title"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
android:hint="@string/pref_hours_ahead_hint"
|
android:hint="@string/filter_hours_hint"
|
||||||
android:importantForAutofill="no"
|
android:importantForAutofill="no"
|
||||||
android:inputType="number"
|
android:inputType="number"
|
||||||
android:minHeight="48dp"
|
android:minHeight="48dp"
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="12dp"
|
android:layout_marginTop="12dp"
|
||||||
android:text="@string/pref_min_el_summary"
|
android:text="@string/filter_elev_text"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/filter_elev_layout"
|
app:layout_constraintBottom_toTopOf="@+id/filter_elev_layout"
|
||||||
app:layout_constraintEnd_toEndOf="@+id/filter_hours_text"
|
app:layout_constraintEnd_toEndOf="@+id/filter_hours_text"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
@@ -79,12 +79,12 @@
|
|||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
android:hint="@string/pref_min_el_hint"
|
android:hint="@string/filter_elev_hint"
|
||||||
android:importantForAutofill="no"
|
android:importantForAutofill="no"
|
||||||
android:inputType="number|numberDecimal"
|
android:inputType="number|numberDecimal"
|
||||||
android:minHeight="48dp"
|
android:minHeight="48dp"
|
||||||
app:endIconMode="clear_text"
|
app:endIconMode="clear_text"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/filter_neg_btn"
|
app:layout_constraintBottom_toTopOf="@+id/filter_btn_neg"
|
||||||
app:layout_constraintEnd_toEndOf="@+id/filter_hours_layout"
|
app:layout_constraintEnd_toEndOf="@+id/filter_hours_layout"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintStart_toStartOf="@+id/filter_hours_layout"
|
app:layout_constraintStart_toStartOf="@+id/filter_hours_layout"
|
||||||
@@ -99,7 +99,7 @@
|
|||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/filter_neg_btn"
|
android:id="@+id/filter_btn_neg"
|
||||||
style="@style/NormalButton"
|
style="@style/NormalButton"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -108,23 +108,23 @@
|
|||||||
android:layout_marginBottom="6dp"
|
android:layout_marginBottom="6dp"
|
||||||
android:text="@string/btn_cancel"
|
android:text="@string/btn_cancel"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/filter_pos_btn"
|
app:layout_constraintEnd_toStartOf="@+id/filter_btn_pos"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintHorizontal_chainStyle="spread_inside"
|
app:layout_constraintHorizontal_chainStyle="spread_inside"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/filter_elev_layout" />
|
app:layout_constraintTop_toBottomOf="@+id/filter_elev_layout" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/filter_pos_btn"
|
android:id="@+id/filter_btn_pos"
|
||||||
style="@style/NormalButton"
|
style="@style/NormalButton"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginEnd="6dp"
|
android:layout_marginEnd="6dp"
|
||||||
android:text="@string/btn_accept"
|
android:text="@string/btn_accept"
|
||||||
app:layout_constraintBaseline_toBaselineOf="@+id/filter_neg_btn"
|
app:layout_constraintBaseline_toBaselineOf="@+id/filter_btn_neg"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintStart_toEndOf="@+id/filter_neg_btn" />
|
app:layout_constraintStart_toEndOf="@+id/filter_btn_neg" />
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
|||||||
@@ -16,11 +16,11 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="4dp"
|
android:layout_marginTop="4dp"
|
||||||
android:minHeight="48dp"
|
android:minHeight="48dp"
|
||||||
android:text="@string/dialog_filter_passes"
|
android:text="@string/locator_title"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/locator_text"
|
app:layout_constraintBottom_toTopOf="@+id/locator_text"
|
||||||
app:layout_constraintEnd_toEndOf="@+id/locator_pos_btn"
|
app:layout_constraintEnd_toEndOf="@+id/locator_btn_pos"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintStart_toStartOf="@+id/locator_neg_btn"
|
app:layout_constraintStart_toStartOf="@+id/locator_btn_neg"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@@ -28,9 +28,9 @@
|
|||||||
style="@style/DialogText"
|
style="@style/DialogText"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="4dp"
|
android:layout_marginStart="8dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="8dp"
|
||||||
android:text="@string/pref_hours_ahead_summary"
|
android:text="@string/locator_text"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/locator_layout"
|
app:layout_constraintBottom_toTopOf="@+id/locator_layout"
|
||||||
app:layout_constraintEnd_toEndOf="@+id/locator_title"
|
app:layout_constraintEnd_toEndOf="@+id/locator_title"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
@@ -42,12 +42,12 @@
|
|||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
android:hint="@string/pref_hours_ahead_hint"
|
android:hint="@string/locator_hint"
|
||||||
android:importantForAutofill="no"
|
android:importantForAutofill="no"
|
||||||
android:inputType="number"
|
android:inputType="number"
|
||||||
android:minHeight="48dp"
|
android:minHeight="48dp"
|
||||||
app:endIconMode="clear_text"
|
app:endIconMode="clear_text"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/locator_neg_btn"
|
app:layout_constraintBottom_toTopOf="@+id/locator_btn_neg"
|
||||||
app:layout_constraintEnd_toEndOf="@+id/locator_text"
|
app:layout_constraintEnd_toEndOf="@+id/locator_text"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintStart_toStartOf="@+id/locator_text"
|
app:layout_constraintStart_toStartOf="@+id/locator_text"
|
||||||
@@ -62,7 +62,7 @@
|
|||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/locator_neg_btn"
|
android:id="@+id/locator_btn_neg"
|
||||||
style="@style/NormalButton"
|
style="@style/NormalButton"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -71,23 +71,23 @@
|
|||||||
android:layout_marginBottom="6dp"
|
android:layout_marginBottom="6dp"
|
||||||
android:text="@string/btn_cancel"
|
android:text="@string/btn_cancel"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/locator_pos_btn"
|
app:layout_constraintEnd_toStartOf="@+id/locator_btn_pos"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintHorizontal_chainStyle="spread_inside"
|
app:layout_constraintHorizontal_chainStyle="spread_inside"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/locator_layout" />
|
app:layout_constraintTop_toBottomOf="@+id/locator_layout" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/locator_pos_btn"
|
android:id="@+id/locator_btn_pos"
|
||||||
style="@style/NormalButton"
|
style="@style/NormalButton"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginEnd="6dp"
|
android:layout_marginEnd="6dp"
|
||||||
android:text="@string/btn_accept"
|
android:text="@string/btn_accept"
|
||||||
app:layout_constraintBaseline_toBaselineOf="@+id/locator_neg_btn"
|
app:layout_constraintBaseline_toBaselineOf="@+id/locator_btn_neg"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintStart_toEndOf="@+id/locator_neg_btn" />
|
app:layout_constraintStart_toEndOf="@+id/locator_btn_neg" />
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="4dp"
|
android:layout_marginTop="4dp"
|
||||||
android:text="@string/entries_modes"
|
android:text="@string/modes_title"
|
||||||
android:minHeight="48dp"
|
android:minHeight="48dp"
|
||||||
app:layout_constraintEnd_toEndOf="@+id/modes_btn_pos"
|
app:layout_constraintEnd_toEndOf="@+id/modes_btn_pos"
|
||||||
app:layout_constraintStart_toStartOf="@+id/modes_btn_neg"
|
app:layout_constraintStart_toStartOf="@+id/modes_btn_neg"
|
||||||
|
|||||||
+56
-27
@@ -16,53 +16,82 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="4dp"
|
android:layout_marginTop="4dp"
|
||||||
android:minHeight="48dp"
|
android:minHeight="48dp"
|
||||||
android:text="@string/dialog_filter_passes"
|
android:text="@string/position_title"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/location_lat_layout"
|
app:layout_constraintBottom_toTopOf="@+id/position_lat_text"
|
||||||
app:layout_constraintEnd_toEndOf="@+id/location_pos_btn"
|
app:layout_constraintEnd_toEndOf="@+id/position_btn_pos"
|
||||||
app:layout_constraintStart_toStartOf="@+id/location_neg_btn"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
|
app:layout_constraintStart_toStartOf="@+id/position_btn_neg"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputLayout
|
<TextView
|
||||||
android:id="@+id/location_lat_layout"
|
android:id="@+id/position_lat_text"
|
||||||
|
style="@style/DialogText"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="4dp"
|
android:layout_marginStart="8dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="8dp"
|
||||||
android:hint="@string/pref_hours_ahead_hint"
|
android:text="@string/position_lat_text"
|
||||||
|
app:layout_constraintBottom_toTopOf="@+id/position_lat_layout"
|
||||||
|
app:layout_constraintEnd_toEndOf="@+id/position_title"
|
||||||
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
|
app:layout_constraintStart_toStartOf="@+id/position_title"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/position_title" />
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/position_lat_layout"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:hint="@string/position_lat_hint"
|
||||||
android:importantForAutofill="no"
|
android:importantForAutofill="no"
|
||||||
android:inputType="number"
|
android:inputType="number"
|
||||||
android:minHeight="48dp"
|
android:minHeight="48dp"
|
||||||
app:endIconMode="clear_text"
|
app:endIconMode="clear_text"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/location_lon_layout"
|
app:layout_constraintBottom_toTopOf="@+id/position_lon_text"
|
||||||
app:layout_constraintEnd_toEndOf="@+id/position_title"
|
app:layout_constraintEnd_toEndOf="@+id/position_lat_text"
|
||||||
app:layout_constraintStart_toStartOf="@+id/position_title"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/position_title">
|
app:layout_constraintStart_toStartOf="@+id/position_lat_text"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/position_lat_text">
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputEditText
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
android:id="@+id/location_lat_edit"
|
android:id="@+id/position_lat_edit"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:inputType="textUri" />
|
android:inputType="textUri" />
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/position_lon_text"
|
||||||
|
style="@style/DialogText"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="12dp"
|
||||||
|
android:text="@string/position_lon_text"
|
||||||
|
app:layout_constraintBottom_toTopOf="@+id/position_lon_layout"
|
||||||
|
app:layout_constraintEnd_toEndOf="@+id/position_lat_text"
|
||||||
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
|
app:layout_constraintStart_toStartOf="@+id/position_lat_text"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/position_lat_layout" />
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputLayout
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
android:id="@+id/location_lon_layout"
|
android:id="@+id/position_lon_layout"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
android:hint="@string/pref_min_el_hint"
|
android:hint="@string/position_lon_hint"
|
||||||
android:importantForAutofill="no"
|
android:importantForAutofill="no"
|
||||||
android:inputType="number|numberDecimal"
|
android:inputType="number|numberDecimal"
|
||||||
android:minHeight="48dp"
|
android:minHeight="48dp"
|
||||||
app:endIconMode="clear_text"
|
app:endIconMode="clear_text"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/location_neg_btn"
|
app:layout_constraintBottom_toTopOf="@+id/position_btn_neg"
|
||||||
app:layout_constraintEnd_toEndOf="@+id/location_lat_layout"
|
app:layout_constraintEnd_toEndOf="@+id/position_lat_layout"
|
||||||
app:layout_constraintStart_toStartOf="@+id/location_lat_layout"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/location_lat_layout">
|
app:layout_constraintStart_toStartOf="@+id/position_lat_layout"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/position_lon_text">
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputEditText
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
android:id="@+id/location_lon_edit"
|
android:id="@+id/position_lon_edit"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:inputType="textUri" />
|
android:inputType="textUri" />
|
||||||
@@ -70,7 +99,7 @@
|
|||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/location_neg_btn"
|
android:id="@+id/position_btn_neg"
|
||||||
style="@style/NormalButton"
|
style="@style/NormalButton"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -79,23 +108,23 @@
|
|||||||
android:layout_marginBottom="6dp"
|
android:layout_marginBottom="6dp"
|
||||||
android:text="@string/btn_cancel"
|
android:text="@string/btn_cancel"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/location_pos_btn"
|
app:layout_constraintEnd_toStartOf="@+id/position_btn_pos"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintHorizontal_chainStyle="spread_inside"
|
app:layout_constraintHorizontal_chainStyle="spread_inside"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/location_lon_layout" />
|
app:layout_constraintTop_toBottomOf="@+id/position_lon_layout" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/location_pos_btn"
|
android:id="@+id/position_btn_pos"
|
||||||
style="@style/NormalButton"
|
style="@style/NormalButton"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginEnd="6dp"
|
android:layout_marginEnd="6dp"
|
||||||
android:text="@string/btn_accept"
|
android:text="@string/btn_accept"
|
||||||
app:layout_constraintBaseline_toBaselineOf="@+id/location_neg_btn"
|
app:layout_constraintBaseline_toBaselineOf="@+id/position_btn_neg"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintStart_toEndOf="@+id/location_neg_btn" />
|
app:layout_constraintStart_toEndOf="@+id/position_btn_neg" />
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
style="@style/Toolbar">
|
style="@style/Toolbar">
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/entries_back_btn"
|
android:id="@+id/entries_btn_back"
|
||||||
style="@style/ToolbarButton"
|
style="@style/ToolbarButton"
|
||||||
android:layout_gravity="start|center_vertical"
|
android:layout_gravity="start|center_vertical"
|
||||||
android:contentDescription="@string/btn_back"
|
android:contentDescription="@string/btn_back"
|
||||||
@@ -29,11 +29,11 @@
|
|||||||
android:importantForAutofill="no" />
|
android:importantForAutofill="no" />
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/entries_modes_btn"
|
android:id="@+id/entries_btn_modes"
|
||||||
style="@style/ToolbarButton"
|
style="@style/ToolbarButton"
|
||||||
android:layout_gravity="end|center_vertical"
|
android:layout_gravity="end|center_vertical"
|
||||||
android:contentDescription="@string/btn_modes"
|
android:contentDescription="@string/btn_modes"
|
||||||
android:src="@drawable/ic_satellite" />
|
android:src="@drawable/ic_modes" />
|
||||||
|
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
style="@style/BottomBar">
|
style="@style/BottomBar">
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/entries_select_btn"
|
android:id="@+id/entries_btn_select"
|
||||||
style="@style/NormalButton"
|
style="@style/NormalButton"
|
||||||
android:layout_width="@dimen/button_width_max"
|
android:layout_width="@dimen/button_width_max"
|
||||||
android:layout_marginStart="@dimen/button_margin_side"
|
android:layout_marginStart="@dimen/button_margin_side"
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
android:text="@string/btn_select" />
|
android:text="@string/btn_select" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/entries_clear_btn"
|
android:id="@+id/entries_btn_clear"
|
||||||
style="@style/NormalButton"
|
style="@style/NormalButton"
|
||||||
android:layout_width="@dimen/button_width_max"
|
android:layout_width="@dimen/button_width_max"
|
||||||
android:layout_marginEnd="@dimen/button_margin_side"
|
android:layout_marginEnd="@dimen/button_margin_side"
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
app:layout_constraintTop_toTopOf="parent">
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/map_back_btn"
|
android:id="@+id/map_btn_back"
|
||||||
style="@style/ToolbarButton"
|
style="@style/ToolbarButton"
|
||||||
android:layout_gravity="start|center_vertical"
|
android:layout_gravity="start|center_vertical"
|
||||||
android:contentDescription="@string/btn_back"
|
android:contentDescription="@string/btn_back"
|
||||||
@@ -94,7 +94,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="10dp"
|
android:layout_marginStart="10dp"
|
||||||
android:layout_marginTop="6dp"
|
android:layout_marginTop="6dp"
|
||||||
android:text="@string/pat_osm_lat"
|
android:text="@string/map_latitude"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="6dp"
|
android:layout_marginTop="6dp"
|
||||||
android:text="@string/pat_osm_lon"
|
android:text="@string/map_longitude"
|
||||||
app:layout_constraintStart_toStartOf="@+id/map_data_lat"
|
app:layout_constraintStart_toStartOf="@+id/map_data_lat"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/map_data_lat" />
|
app:layout_constraintTop_toBottomOf="@+id/map_data_lat" />
|
||||||
|
|
||||||
@@ -126,7 +126,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginEnd="10dp"
|
android:layout_marginEnd="10dp"
|
||||||
android:text="@string/pat_altitude"
|
android:text="@string/map_altitude"
|
||||||
app:layout_constraintBaseline_toBaselineOf="@+id/map_data_lat"
|
app:layout_constraintBaseline_toBaselineOf="@+id/map_data_lat"
|
||||||
app:layout_constraintEnd_toEndOf="parent" />
|
app:layout_constraintEnd_toEndOf="parent" />
|
||||||
|
|
||||||
@@ -135,7 +135,7 @@
|
|||||||
style="@style/WorldMapText"
|
style="@style/WorldMapText"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/pat_distance"
|
android:text="@string/map_distance"
|
||||||
app:layout_constraintBaseline_toBaselineOf="@+id/map_data_lon"
|
app:layout_constraintBaseline_toBaselineOf="@+id/map_data_lon"
|
||||||
app:layout_constraintEnd_toEndOf="@+id/map_data_alt" />
|
app:layout_constraintEnd_toEndOf="@+id/map_data_alt" />
|
||||||
|
|
||||||
@@ -144,7 +144,7 @@
|
|||||||
style="@style/WorldMapText"
|
style="@style/WorldMapText"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/pat_osm_vel"
|
android:text="@string/map_velocity"
|
||||||
app:layout_constraintBaseline_toBaselineOf="@+id/map_data_qth"
|
app:layout_constraintBaseline_toBaselineOf="@+id/map_data_qth"
|
||||||
app:layout_constraintEnd_toEndOf="@+id/map_data_dst" />
|
app:layout_constraintEnd_toEndOf="@+id/map_data_dst" />
|
||||||
|
|
||||||
@@ -167,7 +167,7 @@
|
|||||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/map_prev_btn"
|
android:id="@+id/map_btn_prev"
|
||||||
style="@style/NormalButton"
|
style="@style/NormalButton"
|
||||||
android:layout_width="@dimen/button_width_med"
|
android:layout_width="@dimen/button_width_med"
|
||||||
android:layout_marginStart="@dimen/button_margin_side"
|
android:layout_marginStart="@dimen/button_margin_side"
|
||||||
@@ -188,19 +188,19 @@
|
|||||||
android:gravity="center_horizontal"
|
android:gravity="center_horizontal"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:text="@string/map_sat_id"
|
android:text="@string/map_sat_id"
|
||||||
app:layout_constraintBaseline_toBaselineOf="@+id/map_prev_btn"
|
app:layout_constraintBaseline_toBaselineOf="@+id/map_btn_prev"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/map_next_btn"
|
app:layout_constraintEnd_toStartOf="@+id/map_btn_next"
|
||||||
app:layout_constraintStart_toEndOf="@+id/map_prev_btn" />
|
app:layout_constraintStart_toEndOf="@+id/map_btn_prev" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/map_next_btn"
|
android:id="@+id/map_btn_next"
|
||||||
style="@style/NormalButton"
|
style="@style/NormalButton"
|
||||||
android:layout_width="@dimen/button_width_med"
|
android:layout_width="@dimen/button_width_med"
|
||||||
android:layout_marginEnd="@dimen/button_margin_side"
|
android:layout_marginEnd="@dimen/button_margin_side"
|
||||||
android:text="@string/btn_next"
|
android:text="@string/btn_next"
|
||||||
app:icon="@drawable/ic_next"
|
app:icon="@drawable/ic_next"
|
||||||
app:iconGravity="end"
|
app:iconGravity="end"
|
||||||
app:layout_constraintBaseline_toBaselineOf="@+id/map_prev_btn"
|
app:layout_constraintBaseline_toBaselineOf="@+id/map_btn_prev"
|
||||||
app:layout_constraintEnd_toEndOf="@+id/map_coordinator" />
|
app:layout_constraintEnd_toEndOf="@+id/map_coordinator" />
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
style="@style/Toolbar">
|
style="@style/Toolbar">
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/passes_refresh_btn"
|
android:id="@+id/passes_btn_refresh"
|
||||||
style="@style/ToolbarButton"
|
style="@style/ToolbarButton"
|
||||||
android:rotation="45"
|
android:rotation="45"
|
||||||
android:layout_gravity="start|center_vertical"
|
android:layout_gravity="start|center_vertical"
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
style="@style/ToolbarTimer" />
|
style="@style/ToolbarTimer" />
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/passes_map_btn"
|
android:id="@+id/passes_btn_map"
|
||||||
style="@style/ToolbarButton"
|
style="@style/ToolbarButton"
|
||||||
android:layout_gravity="end|center_vertical"
|
android:layout_gravity="end|center_vertical"
|
||||||
android:contentDescription="@string/btn_map"
|
android:contentDescription="@string/btn_map"
|
||||||
@@ -84,7 +84,7 @@
|
|||||||
style="@style/BottomBar">
|
style="@style/BottomBar">
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/passes_filter_btn"
|
android:id="@+id/passes_btn_filter"
|
||||||
style="@style/NormalButton"
|
style="@style/NormalButton"
|
||||||
android:layout_width="@dimen/button_width_max"
|
android:layout_width="@dimen/button_width_max"
|
||||||
android:layout_marginStart="@dimen/button_margin_side"
|
android:layout_marginStart="@dimen/button_margin_side"
|
||||||
@@ -92,7 +92,7 @@
|
|||||||
android:text="@string/btn_filter" />
|
android:text="@string/btn_filter" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/passes_settings_btn"
|
android:id="@+id/passes_btn_settings"
|
||||||
style="@style/NormalButton"
|
style="@style/NormalButton"
|
||||||
android:layout_width="@dimen/button_width_max"
|
android:layout_width="@dimen/button_width_max"
|
||||||
android:layout_marginEnd="@dimen/button_margin_side"
|
android:layout_marginEnd="@dimen/button_margin_side"
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||||
android:id="@+id/passes_fab"
|
android:id="@+id/passes_fab"
|
||||||
style="@style/FloatingActionButton"
|
style="@style/FloatingActionButton"
|
||||||
android:src="@drawable/ic_sputnik"
|
android:src="@drawable/ic_satellite"
|
||||||
android:contentDescription="@string/btn_satellites"
|
android:contentDescription="@string/btn_satellites"
|
||||||
app:layout_anchor="@id/passes_bottomBar" />
|
app:layout_anchor="@id/passes_bottomBar" />
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
app:layout_constraintTop_toTopOf="parent">
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/radar_back"
|
android:id="@+id/radar_btn_back"
|
||||||
style="@style/ToolbarButton"
|
style="@style/ToolbarButton"
|
||||||
android:layout_gravity="start|center_vertical"
|
android:layout_gravity="start|center_vertical"
|
||||||
android:contentDescription="@string/btn_back"
|
android:contentDescription="@string/btn_back"
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
style="@style/ToolbarTimer" />
|
style="@style/ToolbarTimer" />
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/radar_map"
|
android:id="@+id/radar_btn_map"
|
||||||
style="@style/ToolbarButton"
|
style="@style/ToolbarButton"
|
||||||
android:layout_gravity="end|center_vertical"
|
android:layout_gravity="end|center_vertical"
|
||||||
android:contentDescription="@string/btn_map"
|
android:contentDescription="@string/btn_map"
|
||||||
@@ -147,13 +147,13 @@
|
|||||||
android:visibility="invisible" />
|
android:visibility="invisible" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/radar_recycler_msg"
|
android:id="@+id/radar_empty_msg"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:includeFontPadding="false"
|
android:includeFontPadding="false"
|
||||||
android:text="@string/trans_no_data"
|
android:text="@string/radio_no_data"
|
||||||
android:textSize="@dimen/text_size_medium"
|
android:textSize="@dimen/text_size_medium"
|
||||||
android:visibility="invisible" />
|
android:visibility="invisible" />
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
style="@style/Toolbar">
|
style="@style/Toolbar">
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/settings_back"
|
android:id="@+id/settings_btn_back"
|
||||||
style="@style/ToolbarButton"
|
style="@style/ToolbarButton"
|
||||||
android:layout_gravity="start|center_vertical"
|
android:layout_gravity="start|center_vertical"
|
||||||
android:contentDescription="@string/btn_back"
|
android:contentDescription="@string/btn_back"
|
||||||
@@ -27,9 +27,9 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginStart="@dimen/view_default_margin"
|
android:layout_marginStart="@dimen/view_default_margin"
|
||||||
android:layout_marginTop="60dp"
|
android:layout_marginTop="@dimen/surface_margin_top"
|
||||||
android:layout_marginEnd="@dimen/view_default_margin"
|
android:layout_marginEnd="@dimen/view_default_margin"
|
||||||
android:layout_marginBottom="62dp"
|
android:layout_marginBottom="@dimen/surface_margin_bot"
|
||||||
android:backgroundTint="@color/background">
|
android:backgroundTint="@color/background">
|
||||||
|
|
||||||
<androidx.core.widget.NestedScrollView
|
<androidx.core.widget.NestedScrollView
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
<include
|
<include
|
||||||
android:id="@+id/settings_info"
|
android:id="@+id/settings_about"
|
||||||
layout="@layout/card_about"
|
layout="@layout/card_about"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -53,13 +53,13 @@
|
|||||||
|
|
||||||
<include
|
<include
|
||||||
android:id="@+id/settings_location"
|
android:id="@+id/settings_location"
|
||||||
layout="@layout/card_position"
|
layout="@layout/card_location"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/view_default_margin"
|
android:layout_marginTop="@dimen/view_default_margin"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/settings_info" />
|
app:layout_constraintTop_toBottomOf="@+id/settings_about" />
|
||||||
|
|
||||||
<include
|
<include
|
||||||
android:id="@+id/settings_data"
|
android:id="@+id/settings_data"
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
app:layout_constraintTop_toBottomOf="@+id/settings_location" />
|
app:layout_constraintTop_toBottomOf="@+id/settings_location" />
|
||||||
|
|
||||||
<include
|
<include
|
||||||
android:id="@+id/settings_tracking"
|
android:id="@+id/settings_remote"
|
||||||
layout="@layout/card_remote"
|
layout="@layout/card_remote"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -89,10 +89,10 @@
|
|||||||
android:layout_marginTop="@dimen/view_default_margin"
|
android:layout_marginTop="@dimen/view_default_margin"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/settings_tracking" />
|
app:layout_constraintTop_toBottomOf="@+id/settings_remote" />
|
||||||
|
|
||||||
<include
|
<include
|
||||||
android:id="@+id/settings_warranty"
|
android:id="@+id/settings_outro"
|
||||||
layout="@layout/card_outro"
|
layout="@layout/card_outro"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -113,7 +113,7 @@
|
|||||||
style="@style/BottomBar">
|
style="@style/BottomBar">
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/settings_github_btn"
|
android:id="@+id/settings_btn_github"
|
||||||
style="@style/NormalButton"
|
style="@style/NormalButton"
|
||||||
android:layout_width="@dimen/button_width_max"
|
android:layout_width="@dimen/button_width_max"
|
||||||
android:layout_marginStart="@dimen/button_margin_side"
|
android:layout_marginStart="@dimen/button_margin_side"
|
||||||
@@ -121,7 +121,7 @@
|
|||||||
android:text="@string/btn_github" />
|
android:text="@string/btn_github" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/settings_fdroid_btn"
|
android:id="@+id/settings_btn_fdroid"
|
||||||
style="@style/NormalButton"
|
style="@style/NormalButton"
|
||||||
android:layout_width="@dimen/button_width_max"
|
android:layout_width="@dimen/button_width_max"
|
||||||
android:layout_marginEnd="@dimen/button_margin_side"
|
android:layout_marginEnd="@dimen/button_margin_side"
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:text="@string/trans_description"
|
android:text="@string/radio_info"
|
||||||
android:textSize="@dimen/text_size_small"
|
android:textSize="@dimen/text_size_small"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/radio_up_img"
|
app:layout_constraintEnd_toStartOf="@+id/radio_up_img"
|
||||||
app:layout_constraintHorizontal_chainStyle="spread_inside"
|
app:layout_constraintHorizontal_chainStyle="spread_inside"
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
android:layout_width="18dp"
|
android:layout_width="18dp"
|
||||||
android:layout_height="18dp"
|
android:layout_height="18dp"
|
||||||
android:layout_marginStart="6dp"
|
android:layout_marginStart="6dp"
|
||||||
android:contentDescription="@string/downlink"
|
android:contentDescription="@string/radio_downlink"
|
||||||
android:rotation="90"
|
android:rotation="90"
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/radio_info"
|
app:layout_constraintBottom_toBottomOf="@+id/radio_info"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
android:layout_width="18dp"
|
android:layout_width="18dp"
|
||||||
android:layout_height="18dp"
|
android:layout_height="18dp"
|
||||||
android:layout_marginEnd="6dp"
|
android:layout_marginEnd="6dp"
|
||||||
android:contentDescription="@string/uplink"
|
android:contentDescription="@string/radio_uplink"
|
||||||
android:rotation="270"
|
android:rotation="270"
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/radio_info"
|
app:layout_constraintBottom_toBottomOf="@+id/radio_info"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
android:layout_marginStart="8dp"
|
android:layout_marginStart="8dp"
|
||||||
android:layout_marginTop="2dp"
|
android:layout_marginTop="2dp"
|
||||||
android:layout_marginBottom="4dp"
|
android:layout_marginBottom="4dp"
|
||||||
android:text="@string/trans_mode"
|
android:text="@string/radio_mode"
|
||||||
android:textSize="@dimen/text_size_small"
|
android:textSize="@dimen/text_size_small"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/radio_inverted"
|
app:layout_constraintEnd_toStartOf="@+id/radio_inverted"
|
||||||
@@ -92,7 +92,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginEnd="8dp"
|
android:layout_marginEnd="8dp"
|
||||||
android:text="@string/trans_inverted"
|
android:text="@string/radio_inverted"
|
||||||
android:textSize="@dimen/text_size_small"
|
android:textSize="@dimen/text_size_small"
|
||||||
app:layout_constraintBaseline_toBaselineOf="@+id/radio_mode"
|
app:layout_constraintBaseline_toBaselineOf="@+id/radio_mode"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="4dp"
|
||||||
android:layout_marginBottom="4dp"
|
android:layout_marginBottom="4dp"
|
||||||
android:hint="@string/sources_hint"
|
android:hint="@string/sources_hint"
|
||||||
app:endIconDrawable="@drawable/ic_clear"
|
app:endIconDrawable="@drawable/ic_delete"
|
||||||
app:endIconMode="custom">
|
app:endIconMode="custom">
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputEditText
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
android:name="com.rtbishop.look4sat.presentation.entriesScreen.EntriesFragment"
|
android:name="com.rtbishop.look4sat.presentation.entriesScreen.EntriesFragment"
|
||||||
tools:layout="@layout/fragment_entries">
|
tools:layout="@layout/fragment_entries">
|
||||||
<action
|
<action
|
||||||
android:id="@+id/action_entries_to_modes"
|
android:id="@+id/entries_to_modes"
|
||||||
app:destination="@id/nav_modes" />
|
app:destination="@id/nav_modes" />
|
||||||
</fragment>
|
</fragment>
|
||||||
<fragment
|
<fragment
|
||||||
@@ -17,13 +17,9 @@
|
|||||||
android:name="com.rtbishop.look4sat.presentation.passesScreen.PassesFragment"
|
android:name="com.rtbishop.look4sat.presentation.passesScreen.PassesFragment"
|
||||||
tools:layout="@layout/fragment_passes">
|
tools:layout="@layout/fragment_passes">
|
||||||
<action
|
<action
|
||||||
android:id="@+id/action_passes_to_filter"
|
android:id="@+id/passes_to_filter"
|
||||||
app:destination="@id/nav_dialog_filter" />
|
app:destination="@id/nav_filter" />
|
||||||
</fragment>
|
</fragment>
|
||||||
<dialog
|
|
||||||
android:id="@+id/nav_dialog_filter"
|
|
||||||
android:name="com.rtbishop.look4sat.presentation.passesScreen.FilterDialog"
|
|
||||||
tools:layout="@layout/dialog_filter" />
|
|
||||||
<fragment
|
<fragment
|
||||||
android:id="@+id/nav_radar"
|
android:id="@+id/nav_radar"
|
||||||
android:name="com.rtbishop.look4sat.presentation.radarScreen.RadarFragment"
|
android:name="com.rtbishop.look4sat.presentation.radarScreen.RadarFragment"
|
||||||
@@ -51,44 +47,48 @@
|
|||||||
android:name="com.rtbishop.look4sat.presentation.settingsScreen.SettingsFragment"
|
android:name="com.rtbishop.look4sat.presentation.settingsScreen.SettingsFragment"
|
||||||
tools:layout="@layout/fragment_settings">
|
tools:layout="@layout/fragment_settings">
|
||||||
<action
|
<action
|
||||||
android:id="@+id/action_prefs_to_sources"
|
android:id="@+id/settings_to_sources"
|
||||||
app:destination="@id/nav_sources" />
|
app:destination="@id/nav_sources" />
|
||||||
<action
|
|
||||||
android:id="@+id/action_prefs_to_location"
|
|
||||||
app:destination="@id/nav_location" />
|
|
||||||
<action
|
|
||||||
android:id="@+id/action_prefs_to_locator"
|
|
||||||
app:destination="@id/nav_locator" />
|
|
||||||
</fragment>
|
</fragment>
|
||||||
<dialog
|
|
||||||
android:id="@+id/nav_sources"
|
|
||||||
android:name="com.rtbishop.look4sat.presentation.settingsScreen.SourcesDialog"
|
|
||||||
tools:layout="@layout/dialog_sources" />
|
|
||||||
<dialog
|
<dialog
|
||||||
android:id="@+id/nav_modes"
|
android:id="@+id/nav_modes"
|
||||||
android:name="com.rtbishop.look4sat.presentation.entriesScreen.ModesDialog"
|
android:name="com.rtbishop.look4sat.presentation.entriesScreen.ModesDialog"
|
||||||
tools:layout="@layout/dialog_modes" />
|
tools:layout="@layout/dialog_modes" />
|
||||||
<dialog
|
<dialog
|
||||||
android:id="@+id/nav_location"
|
android:id="@+id/nav_filter"
|
||||||
android:name="com.rtbishop.look4sat.presentation.settingsScreen.LocationDialog"
|
android:name="com.rtbishop.look4sat.presentation.passesScreen.FilterDialog"
|
||||||
tools:layout="@layout/dialog_location" />
|
tools:layout="@layout/dialog_filter" />
|
||||||
|
<dialog
|
||||||
|
android:id="@+id/nav_sources"
|
||||||
|
android:name="com.rtbishop.look4sat.presentation.settingsScreen.SourcesDialog"
|
||||||
|
tools:layout="@layout/dialog_sources" />
|
||||||
|
<dialog
|
||||||
|
android:id="@+id/nav_position"
|
||||||
|
android:name="com.rtbishop.look4sat.presentation.settingsScreen.PositionDialog"
|
||||||
|
tools:layout="@layout/dialog_position" />
|
||||||
<dialog
|
<dialog
|
||||||
android:id="@+id/nav_locator"
|
android:id="@+id/nav_locator"
|
||||||
android:name="com.rtbishop.look4sat.presentation.settingsScreen.LocatorDialog"
|
android:name="com.rtbishop.look4sat.presentation.settingsScreen.LocatorDialog"
|
||||||
tools:layout="@layout/dialog_locator" />
|
tools:layout="@layout/dialog_locator" />
|
||||||
<action
|
<action
|
||||||
android:id="@+id/action_global_entriesFragment"
|
android:id="@+id/global_to_entries"
|
||||||
app:destination="@id/nav_entries" />
|
app:destination="@id/nav_entries" />
|
||||||
<action
|
<action
|
||||||
android:id="@+id/action_global_passesFragment"
|
android:id="@+id/global_to_passes"
|
||||||
app:destination="@id/nav_passes" />
|
app:destination="@id/nav_passes" />
|
||||||
<action
|
<action
|
||||||
android:id="@+id/action_global_radarFragment"
|
android:id="@+id/global_to_radar"
|
||||||
app:destination="@id/nav_radar" />
|
app:destination="@id/nav_radar" />
|
||||||
<action
|
<action
|
||||||
android:id="@+id/action_global_mapFragment"
|
android:id="@+id/global_to_map"
|
||||||
app:destination="@id/nav_map" />
|
app:destination="@id/nav_map" />
|
||||||
<action
|
<action
|
||||||
android:id="@+id/action_global_settingsFragment"
|
android:id="@+id/global_to_settings"
|
||||||
app:destination="@id/nav_settings" />
|
app:destination="@id/nav_settings" />
|
||||||
|
<action
|
||||||
|
android:id="@+id/global_to_position"
|
||||||
|
app:destination="@id/nav_position" />
|
||||||
|
<action
|
||||||
|
android:id="@+id/global_to_locator"
|
||||||
|
app:destination="@id/nav_locator" />
|
||||||
</navigation>
|
</navigation>
|
||||||
@@ -1,9 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name="app_name">Look4Sat</string>
|
<string name="app_name">Look4Sat</string>
|
||||||
|
<string name="app_timer">00:00:00</string>
|
||||||
<string name="app_version">Версия: %s</string>
|
<string name="app_version">Версия: %s</string>
|
||||||
<string name="app_subtitle">Трекер спутников для Android</string>
|
<string name="app_subtitle">Трекер спутников для Android</string>
|
||||||
|
|
||||||
|
<!--Buttons-->
|
||||||
|
|
||||||
<string name="btn_add">Добавить</string>
|
<string name="btn_add">Добавить</string>
|
||||||
<string name="btn_accept">Принять</string>
|
<string name="btn_accept">Принять</string>
|
||||||
<string name="btn_cancel">Отменить</string>
|
<string name="btn_cancel">Отменить</string>
|
||||||
@@ -29,42 +32,45 @@
|
|||||||
<string name="btn_support">Поддержать</string>
|
<string name="btn_support">Поддержать</string>
|
||||||
<string name="btn_fdroid">F-Droid</string>
|
<string name="btn_fdroid">F-Droid</string>
|
||||||
|
|
||||||
<string name="fmt_entries">Спутников: %s</string>
|
<!--Dialogs-->
|
||||||
<string name="fmt_radios">Трансиверов: %s</string>
|
|
||||||
|
|
||||||
<string name="downlink">Даунлинк</string>
|
<string name="filter_title">Фильтровать пролеты</string>
|
||||||
<string name="uplink">Аплинк</string>
|
<string name="filter_hours_hint">Количество часов</string>
|
||||||
|
<string name="filter_hours_text">Показать пролеты за след. Х часов</string>
|
||||||
|
<string name="filter_elev_hint">Минимальная элевация</string>
|
||||||
|
<string name="filter_elev_text">Показать пролеты с элевацией более</string>
|
||||||
|
|
||||||
<string name="yes">Да</string>
|
<string name="locator_title">Настройки локатора QTH</string>
|
||||||
<string name="no">Нет</string>
|
<string name="locator_text">Установить позицию используя локатор</string>
|
||||||
|
<string name="locator_hint">QTH</string>
|
||||||
|
|
||||||
|
<string name="modes_title">Выберите тип модуляции</string>
|
||||||
|
|
||||||
|
<string name="position_title">Настройки местоположения</string>
|
||||||
|
<string name="position_lat_text">Установите широту наземной станции</string>
|
||||||
|
<string name="position_lat_hint">Широта</string>
|
||||||
|
<string name="position_lon_text">Установите долготу наземной станции</string>
|
||||||
|
<string name="position_lon_hint">Долгота</string>
|
||||||
|
|
||||||
<string name="sources_title">Источники данных</string>
|
<string name="sources_title">Источники данных</string>
|
||||||
<string name="sources_hint">Протокол HTTPS</string>
|
<string name="sources_hint">Протокол HTTPS</string>
|
||||||
|
|
||||||
<string name="entries_modes">Выберите тип модуляции</string>
|
<!--Fragments-->
|
||||||
|
|
||||||
<string name="entries_search_hint">Поиск по Имени / Id</string>
|
<string name="entries_search_hint">Поиск по Имени / Id</string>
|
||||||
<string name="entries_update_error">Ошибка обновления спутников</string>
|
|
||||||
|
|
||||||
<string name="passes_error">Нет предстоящих пролётов спутников</string>
|
<string name="passes_error">Нет предстоящих пролётов спутников</string>
|
||||||
<string name="passes_empty_db">Пожалуйста, обновите базу данных спутников через меню Настроек</string>
|
<string name="passes_empty_db">Пожалуйста, обновите базу данных спутников через меню Настроек</string>
|
||||||
|
|
||||||
|
<string name="pass_satName">%s</string>
|
||||||
|
<string name="pass_satId">Id:%d</string>
|
||||||
<string name="pass_aosAz">НПС - %.1f°</string>
|
<string name="pass_aosAz">НПС - %.1f°</string>
|
||||||
<string name="pass_tcaAz">Азимут: %.1f°</string>
|
<string name="pass_elevation">Элевация: %.1f°</string>
|
||||||
<string name="pass_elevation">МаксЭлев: %.1f°</string>
|
|
||||||
<string name="pass_los">%.1f° - КПС</string>
|
<string name="pass_los">%.1f° - КПС</string>
|
||||||
<string name="pass_altitude">Высота: %.0fкм</string>
|
<string name="pass_altitude">Высота: %.0fкм</string>
|
||||||
|
<string name="pass_placeholder"> - - : - - </string>
|
||||||
<string name="trans_mode">Модуляция: %s</string>
|
<string name="pass_startTime">HH:mm:ss - EEE</string>
|
||||||
<string name="trans_no_mode">Модуляция: нет</string>
|
<string name="pass_endTime">EEE - HH:mm:ss</string>
|
||||||
<string name="trans_inverted">Инверсия: %s</string>
|
|
||||||
<string name="trans_data">Трансиверы спутника:</string>
|
|
||||||
<string name="trans_no_data">Не найдены трансиверы для этого спутника</string>
|
|
||||||
|
|
||||||
<string name="map_title">Карта Мира</string>
|
|
||||||
<string name="map_qth">QTH Локатор: %s</string>
|
|
||||||
<string name="map_coverage">Покрытие: %.0fкм</string>
|
|
||||||
<string name="map_sat_id">Id: %d</string>
|
|
||||||
<string name="map_sat_name">%s</string>
|
|
||||||
|
|
||||||
<string name="radar_az_text">Азим.</string>
|
<string name="radar_az_text">Азим.</string>
|
||||||
<string name="radar_az_value">%.1f°</string>
|
<string name="radar_az_value">%.1f°</string>
|
||||||
@@ -74,68 +80,59 @@
|
|||||||
<string name="radar_alt_value">%.0f km</string>
|
<string name="radar_alt_value">%.0f km</string>
|
||||||
<string name="radar_dist_text">Дальн.</string>
|
<string name="radar_dist_text">Дальн.</string>
|
||||||
<string name="radar_dist_value">%.0f km</string>
|
<string name="radar_dist_value">%.0f km</string>
|
||||||
<string name="radar_sat_id">Id: %d</string>
|
|
||||||
<string name="radar_sat_name">%s</string>
|
<string name="radar_sat_name">%s</string>
|
||||||
|
<string name="radar_sat_id">Id:%d</string>
|
||||||
|
|
||||||
<string name="pat_azimuth">Азимут: %.1f°</string>
|
<string name="radio_mode">Модуляция: %s</string>
|
||||||
<string name="pat_elevation">Элевация: %.1f°</string>
|
<string name="radio_inverted">Инверсия: %s</string>
|
||||||
<string name="pat_distance">Дистанция: %.0fкм</string>
|
<string name="radio_info">%s</string>
|
||||||
<string name="pat_altitude">Высота: %.0fкм</string>
|
<string name="radio_no_link">- - . - -</string>
|
||||||
<string name="pat_osm_lat">Широта: %.1f°</string>
|
<string name="radio_link_low">%.4f</string>
|
||||||
<string name="pat_osm_lon">Долгота: %.1f°</string>
|
<string name="radio_link_lowHigh">%.4f - %.4f</string>
|
||||||
<string name="pat_osm_vel">Скорость: %.2fкм/с</string>
|
<string name="radio_data">Трансиверы спутника:</string>
|
||||||
|
<string name="radio_no_data">Не найдены трансиверы для этого спутника</string>
|
||||||
|
<string name="radio_string_yes">Да</string>
|
||||||
|
<string name="radio_string_no">Нет</string>
|
||||||
|
<string name="radio_downlink">Даунлинк</string>
|
||||||
|
<string name="radio_uplink">Аплинк</string>
|
||||||
|
|
||||||
<string name="pref_gsp_title">Местоположение наземной станции</string>
|
<string name="map_title">Карта Мира</string>
|
||||||
<string name="pref_pos_gps">Установить позицию по данным GPS</string>
|
<string name="map_sat_name">%s</string>
|
||||||
<string name="pref_pos_gps_null">Нет данных геолокации</string>
|
<string name="map_sat_id">Id:%d</string>
|
||||||
<string name="pref_pos_manual_error">Введены неверные данные</string>
|
<string name="map_latitude">Широта: %.1f°</string>
|
||||||
<string name="pref_pos_gps_error">Нет разрешения использовать геоданные</string>
|
<string name="map_longitude">Долгота: %.1f°</string>
|
||||||
<string name="pref_pos_qth">Установить позицию по локатору QTH</string>
|
<string name="map_qth">QTH Локатор: %s</string>
|
||||||
<string name="pref_pos_qth_error">Неправильный локатор QTH</string>
|
<string name="map_altitude">Высота: %.0fкм</string>
|
||||||
<string name="pref_pos_success">Позиция успешно обновлена</string>
|
<string name="map_distance">Дистанция: %.0fкм</string>
|
||||||
<string name="pref_pass_title">Настройки пролетов спутников</string>
|
<string name="map_velocity">Скорость: %.2fкм/с</string>
|
||||||
<string name="pref_hours_title">Количество часов</string>
|
<string name="map_copyright">Wikimedia maps | Map data © OpenStreetMap contributors</string>
|
||||||
<string name="pref_elev_title">Минимальная элевация</string>
|
|
||||||
<string name="pref_map_labels_title">Настройки карты</string>
|
|
||||||
<string name="pref_map_labels">Использовать текстовые метки</string>
|
|
||||||
<string name="pref_other_title">Другие настройки</string>
|
|
||||||
<string name="pref_compass_title">Использовать компас</string>
|
|
||||||
<string name="pref_radar_sweep">Показывать анимацию радара</string>
|
|
||||||
<string name="pref_time_utc_title">Показывать время пролета по UTC</string>
|
|
||||||
|
|
||||||
<string name="dialog_filter_passes">Фильтровать пролеты</string>
|
<!--Cards-->
|
||||||
|
|
||||||
<string name="pref_hours_ahead_hint">Количество часов</string>
|
|
||||||
<string name="pref_hours_ahead_summary">Показать пролеты за след. Х часов</string>
|
|
||||||
<string name="pref_hours_ahead_input_error">Введите значение между 1ч и 168ч</string>
|
|
||||||
<string name="pref_min_el_hint">Минимальная элевация</string>
|
|
||||||
<string name="pref_min_el_summary">Показать пролеты с элевацией более</string>
|
|
||||||
<string name="pref_min_el_input_error">Введите значение между 0° и 90°</string>
|
|
||||||
|
|
||||||
<string name="location_title">Местоположение</string>
|
<string name="location_title">Местоположение</string>
|
||||||
<string name="location_lat">Широта: %.4f°</string>
|
<string name="location_lat">Широта: %.4f°</string>
|
||||||
<string name="location_lon">Долгота: %.4f°</string>
|
<string name="location_lon">Долгота: %.4f°</string>
|
||||||
<string name="location_gps">Данные GPS</string>
|
<string name="location_null">Нет данных геолокации</string>
|
||||||
<string name="location_gps_null">Нет данных геолокации</string>
|
|
||||||
<string name="location_gps_error">Нет разрешения использовать геоданные</string>
|
<string name="location_gps_error">Нет разрешения использовать геоданные</string>
|
||||||
<string name="location_qth">Локатор QTH</string>
|
<string name="location_manual_error">Введены неверные данные</string>
|
||||||
<string name="location_qth_error">Неправильный локатор QTH</string>
|
<string name="location_qth_error">Неправильный локатор QTH</string>
|
||||||
<string name="location_success">Позиция успешно обновлена</string>
|
<string name="location_success">Позиция успешно обновлена</string>
|
||||||
|
|
||||||
|
<string name="data_title">Обновление данных</string>
|
||||||
|
<string name="data_error">При обновлении возникли ошибки</string>
|
||||||
|
<string name="data_entries">Спутников: %s</string>
|
||||||
|
<string name="data_radios">Трансиверов: %s</string>
|
||||||
|
<string name="data_success">Обновление прошло успешно</string>
|
||||||
|
|
||||||
|
<string name="remote_title">Настройки ротатора</string>
|
||||||
|
<string name="remote_switch">Удаленное управление</string>
|
||||||
|
<string name="remote_ip_hint">IP адрес</string>
|
||||||
|
<string name="remote_port_hint">Порт</string>
|
||||||
|
|
||||||
<string name="other_title">Другие настройки</string>
|
<string name="other_title">Другие настройки</string>
|
||||||
<string name="other_switch_utc">Показывать время пролета по UTC</string>
|
<string name="other_switch_utc">Показывать время по UTC</string>
|
||||||
<string name="other_switch_sweep">Показывать анимацию радара</string>
|
<string name="other_switch_sweep">Показывать анимацию радара</string>
|
||||||
<string name="other_switch_sensors">Использовать компас</string>
|
<string name="other_switch_sensors">Использовать сенсоры устройства</string>
|
||||||
|
|
||||||
<string name="tracking_title">Настройки слежения</string>
|
|
||||||
<string name="tracking_switch">Управление поворотным устройством</string>
|
|
||||||
<string name="tracking_ip_hint">IP адрес</string>
|
|
||||||
<string name="tracking_ip_invalid">Введён неправильный IP адрес</string>
|
|
||||||
<string name="tracking_port_hint">Порт</string>
|
|
||||||
<string name="tracking_port_invalid">Введите порт в диапазоне от 1024 до 65535</string>
|
|
||||||
|
|
||||||
<string name="update_title">Обновление данных</string>
|
|
||||||
<string name="update_error">При обновлении возникли ошибки</string>
|
|
||||||
|
|
||||||
<string name="outro_title">Я хотел бы сказать спасибо:</string>
|
<string name="outro_title">Я хотел бы сказать спасибо:</string>
|
||||||
<string name="outro_thanks"> • Вам за использование этого приложения! \nЖелаю всегда чистого неба над головой!
|
<string name="outro_thanks"> • Вам за использование этого приложения! \nЖелаю всегда чистого неба над головой!
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name="app_name">Look4Sat</string>
|
<string name="app_name">Look4Sat</string>
|
||||||
|
<string name="app_timer">00:00:00</string>
|
||||||
<string name="app_version">Version: %s</string>
|
<string name="app_version">Version: %s</string>
|
||||||
<string name="app_subtitle">Satellite tracker and pass predictor</string>
|
<string name="app_subtitle">Satellite tracker and pass predictor</string>
|
||||||
|
|
||||||
|
<!--Buttons-->
|
||||||
|
|
||||||
<string name="btn_add">Add</string>
|
<string name="btn_add">Add</string>
|
||||||
<string name="btn_accept">Accept</string>
|
<string name="btn_accept">Accept</string>
|
||||||
<string name="btn_cancel">Cancel</string>
|
<string name="btn_cancel">Cancel</string>
|
||||||
@@ -29,54 +32,45 @@
|
|||||||
<string name="btn_support">Support</string>
|
<string name="btn_support">Support</string>
|
||||||
<string name="btn_fdroid">F-Droid</string>
|
<string name="btn_fdroid">F-Droid</string>
|
||||||
|
|
||||||
<string name="fmt_entries">Satellites: %s</string>
|
<!--Dialogs-->
|
||||||
<string name="fmt_radios">Transceivers: %s</string>
|
|
||||||
|
|
||||||
<string name="downlink">Downlink</string>
|
<string name="filter_title">Filter passes</string>
|
||||||
<string name="uplink">Uplink</string>
|
<string name="filter_hours_hint">Hours ahead</string>
|
||||||
|
<string name="filter_hours_text">Show passes that occur within X hours</string>
|
||||||
|
<string name="filter_elev_hint">Minimal elevation</string>
|
||||||
|
<string name="filter_elev_text">Show passes with max elevation above</string>
|
||||||
|
|
||||||
<string name="yes">Yes</string>
|
<string name="locator_title">QTH locator settings</string>
|
||||||
<string name="no">No</string>
|
<string name="locator_text">Set station\'s position using your locator</string>
|
||||||
|
<string name="locator_hint">QTH</string>
|
||||||
|
|
||||||
|
<string name="modes_title">Select modulation type</string>
|
||||||
|
|
||||||
|
<string name="position_title">Station position settings</string>
|
||||||
|
<string name="position_lat_text">Set your ground station\'s latitude</string>
|
||||||
|
<string name="position_lat_hint">Latitude</string>
|
||||||
|
<string name="position_lon_text">Set your ground station\'s longitude</string>
|
||||||
|
<string name="position_lon_hint">Longitude</string>
|
||||||
|
|
||||||
<string name="sources_title">Manage data sources</string>
|
<string name="sources_title">Manage data sources</string>
|
||||||
<string name="sources_hint">HTTPS Source</string>
|
<string name="sources_hint">HTTPS Source</string>
|
||||||
|
|
||||||
<string name="entries_modes">Select modulation type</string>
|
<!--Fragments-->
|
||||||
<string name="entries_search_hint">Search by Name / Id</string>
|
|
||||||
<string name="entries_update_error">Error importing satellite data</string>
|
|
||||||
|
|
||||||
<string name="timer_zero" translatable="false">00:00:00</string>
|
<string name="entries_search_hint">Search by Name / Id</string>
|
||||||
|
|
||||||
<string name="passes_error">There are no upcoming satellite passes to display</string>
|
<string name="passes_error">There are no upcoming satellite passes to display</string>
|
||||||
<string name="passes_empty_db">No data to show. Please update the database via Settings menu.</string>
|
<string name="passes_empty_db">No data to show. Please update the database via Settings menu.</string>
|
||||||
|
|
||||||
<string name="pass_satName" translatable="false">%s</string>
|
<string name="pass_satName">%s</string>
|
||||||
<string name="pass_satId" translatable="false">Id:%d</string>
|
<string name="pass_satId">Id:%d</string>
|
||||||
<string name="pass_aosAz">AOS - %.1f°</string>
|
<string name="pass_aosAz">AOS - %.1f°</string>
|
||||||
<string name="pass_tcaAz">Azimuth: %.1f°</string>
|
<string name="pass_elevation">Elevation: %.1f°</string>
|
||||||
<string name="pass_elevation">MaxElev: %.1f°</string>
|
|
||||||
<string name="pass_los">%.1f° - LOS</string>
|
<string name="pass_los">%.1f° - LOS</string>
|
||||||
<string name="pass_altitude">Altitude: %.0f km</string>
|
<string name="pass_altitude">Altitude: %.0f km</string>
|
||||||
<string name="pass_placeholder" translatable="false"> - - : - - </string>
|
<string name="pass_placeholder"> - - : - - </string>
|
||||||
<string name="pass_startTime" translatable="false">HH:mm:ss - EEE</string>
|
<string name="pass_startTime">HH:mm:ss - EEE</string>
|
||||||
<string name="pass_endTime" translatable="false">EEE - HH:mm:ss</string>
|
<string name="pass_endTime">EEE - HH:mm:ss</string>
|
||||||
|
|
||||||
<string name="trans_mode">Mode: %s</string>
|
|
||||||
<string name="trans_no_mode">Mode: null</string>
|
|
||||||
<string name="trans_inverted">Inverted: %s</string>
|
|
||||||
<string name="trans_description" translatable="false">%s</string>
|
|
||||||
<string name="trans_no_link" translatable="false">- - . - -</string>
|
|
||||||
<string name="trans_link_low" translatable="false">%.4f</string>
|
|
||||||
<string name="trans_link_lowHigh" translatable="false">%.4f - %.4f</string>
|
|
||||||
<string name="trans_data">Satellite transceivers:</string>
|
|
||||||
<string name="trans_no_data">No transceivers found for this satellite</string>
|
|
||||||
|
|
||||||
<string name="map_title">World Map</string>
|
|
||||||
<string name="map_qth">QTH Locator: %s</string>
|
|
||||||
<string name="map_coverage">Coverage: %.0f km</string>
|
|
||||||
<string name="map_sat_id">Id: %d</string>
|
|
||||||
<string name="map_sat_name">%s</string>
|
|
||||||
<string name="map_copyright" translatable="false">Wikimedia maps | Map data © OpenStreetMap contributors</string>
|
|
||||||
|
|
||||||
<string name="radar_az_text">Azimuth</string>
|
<string name="radar_az_text">Azimuth</string>
|
||||||
<string name="radar_az_value">%.1f°</string>
|
<string name="radar_az_value">%.1f°</string>
|
||||||
@@ -86,72 +80,60 @@
|
|||||||
<string name="radar_alt_value">%.0f km</string>
|
<string name="radar_alt_value">%.0f km</string>
|
||||||
<string name="radar_dist_text">Distance</string>
|
<string name="radar_dist_text">Distance</string>
|
||||||
<string name="radar_dist_value">%.0f km</string>
|
<string name="radar_dist_value">%.0f km</string>
|
||||||
<string name="radar_sat_id">Id: %d</string>
|
|
||||||
<string name="radar_sat_name">%s</string>
|
<string name="radar_sat_name">%s</string>
|
||||||
|
<string name="radar_sat_id">Id:%d</string>
|
||||||
|
|
||||||
<string name="pat_azimuth">Azimuth: %.1f°</string>
|
<string name="radio_mode">Mode: %s</string>
|
||||||
<string name="pat_elevation">Elevation: %.1f°</string>
|
<string name="radio_inverted">Inverted: %s</string>
|
||||||
<string name="pat_distance">Range: %.0f km</string>
|
<string name="radio_info">%s</string>
|
||||||
<string name="pat_altitude">Altitude: %.0f km</string>
|
<string name="radio_no_link">- - . - -</string>
|
||||||
<string name="pat_osm_idName" translatable="false">%s : %s</string>
|
<string name="radio_link_low">%.4f</string>
|
||||||
<string name="pat_osm_lat">Latitude: %.1f°</string>
|
<string name="radio_link_lowHigh">%.4f - %.4f</string>
|
||||||
<string name="pat_osm_lon">Longitude: %.1f°</string>
|
<string name="radio_data">Satellite transceivers:</string>
|
||||||
<string name="pat_osm_vel">Velocity: %.2f km/s</string>
|
<string name="radio_no_data">No transceivers found for this satellite</string>
|
||||||
|
<string name="radio_string_yes">Yes</string>
|
||||||
|
<string name="radio_string_no">No</string>
|
||||||
|
<string name="radio_downlink">Downlink</string>
|
||||||
|
<string name="radio_uplink">Uplink</string>
|
||||||
|
|
||||||
<string name="pref_gsp_title">Ground station position</string>
|
<string name="map_title">World Map</string>
|
||||||
<string name="pref_pos_gps">Set position from GPS data</string>
|
<string name="map_sat_name">%s</string>
|
||||||
<string name="pref_pos_gps_null">No geolocation data</string>
|
<string name="map_sat_id">Id:%d</string>
|
||||||
<string name="pref_pos_manual_error">Invalid location entered</string>
|
<string name="map_latitude">Latitude: %.1f°</string>
|
||||||
<string name="pref_pos_gps_error">Check your location permissions</string>
|
<string name="map_longitude">Longitude: %.1f°</string>
|
||||||
<string name="pref_pos_qth">Set position from QTH locator</string>
|
<string name="map_qth">QTH Locator: %s</string>
|
||||||
<string name="pref_pos_qth_error">Invalid QTH locator</string>
|
<string name="map_altitude">Altitude: %.0f km</string>
|
||||||
<string name="pref_pos_success">Position updated successfully</string>
|
<string name="map_distance">Distance: %.0f km</string>
|
||||||
<string name="pref_pass_title">Satellite pass preferences</string>
|
<string name="map_velocity">Velocity: %.2f km/s</string>
|
||||||
<string name="pref_hours_title">Hours ahead</string>
|
<string name="map_copyright">Wikimedia maps | Map data © OpenStreetMap contributors</string>
|
||||||
<string name="pref_elev_title">Minimal elevation</string>
|
|
||||||
<string name="pref_map_labels_title">Map preferences</string>
|
|
||||||
<string name="pref_map_labels">Use text labels instead of icons</string>
|
|
||||||
<string name="pref_other_title">Other</string>
|
|
||||||
<string name="pref_time_utc_title">Show pass time in UTC</string>
|
|
||||||
<string name="pref_radar_sweep">Enable radar sweep animation</string>
|
|
||||||
<string name="pref_compass_title">Use sensors to rotate radar view</string>
|
|
||||||
|
|
||||||
<string name="dialog_filter_passes">Filter passes</string>
|
<!--Cards-->
|
||||||
|
|
||||||
<string name="pref_hours_ahead_key" translatable="false">hoursAhead</string>
|
|
||||||
<string name="pref_hours_ahead_hint">Hours ahead</string>
|
|
||||||
<string name="pref_hours_ahead_summary">Show passes that occur within X hours</string>
|
|
||||||
<string name="pref_hours_ahead_input_error">Set the value between 1h and 168h</string>
|
|
||||||
<string name="pref_min_el_key" translatable="false">minEl</string>
|
|
||||||
<string name="pref_min_el_hint">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="location_title">Station position</string>
|
<string name="location_title">Station position</string>
|
||||||
<string name="location_lat">Latitude: %.4f°</string>
|
<string name="location_lat">Latitude: %.4f°</string>
|
||||||
<string name="location_lon">Longitude: %.4f°</string>
|
<string name="location_lon">Longitude: %.4f°</string>
|
||||||
<string name="location_gps">From GPS</string>
|
<string name="location_null">No geolocation data</string>
|
||||||
<string name="location_gps_null">No geolocation data</string>
|
|
||||||
<string name="location_gps_error">Check your location permissions</string>
|
<string name="location_gps_error">Check your location permissions</string>
|
||||||
<string name="location_qth">From QTH</string>
|
<string name="location_manual_error">Invalid location entered</string>
|
||||||
<string name="location_qth_error">Invalid QTH locator</string>
|
<string name="location_qth_error">Invalid QTH locator</string>
|
||||||
<string name="location_success">Position updated successfully</string>
|
<string name="location_success">Position updated successfully</string>
|
||||||
|
|
||||||
|
<string name="data_title">Satellite data update</string>
|
||||||
|
<string name="data_error">Update completed with errors</string>
|
||||||
|
<string name="data_entries">Satellites: %s</string>
|
||||||
|
<string name="data_radios">Transceivers: %s</string>
|
||||||
|
<string name="data_success">Update completed successfully</string>
|
||||||
|
|
||||||
|
<string name="remote_title">Rotator preferences</string>
|
||||||
|
<string name="remote_switch">Enable remote control</string>
|
||||||
|
<string name="remote_ip_hint">IP address</string>
|
||||||
|
<string name="remote_port_hint">Port</string>
|
||||||
|
|
||||||
<string name="other_title">Other preferences</string>
|
<string name="other_title">Other preferences</string>
|
||||||
<string name="other_switch_utc">Show pass time in UTC</string>
|
<string name="other_switch_utc">Show pass time in UTC</string>
|
||||||
<string name="other_switch_sweep">Enable radar sweep animation</string>
|
<string name="other_switch_sweep">Enable radar sweep animation</string>
|
||||||
<string name="other_switch_sensors">Use sensors to rotate radar view</string>
|
<string name="other_switch_sensors">Use sensors to rotate radar view</string>
|
||||||
|
|
||||||
<string name="tracking_title">Tracking preferences</string>
|
|
||||||
<string name="tracking_switch">Antenna rotator control</string>
|
|
||||||
<string name="tracking_ip_hint">IP address</string>
|
|
||||||
<string name="tracking_ip_invalid">Please enter a valid IP address</string>
|
|
||||||
<string name="tracking_port_hint">Port</string>
|
|
||||||
<string name="tracking_port_invalid">Please enter a port between 1024 to 65535</string>
|
|
||||||
|
|
||||||
<string name="update_title">Satellite data update</string>
|
|
||||||
<string name="update_error">Update completed with errors</string>
|
|
||||||
|
|
||||||
<string name="outro_title">I would like to say thanks to:</string>
|
<string name="outro_title">I would like to say thanks to:</string>
|
||||||
<string name="outro_thanks"> • You for downloading and using Look4Sat! \nMay your sky always be clear!
|
<string name="outro_thanks"> • You for downloading and using Look4Sat! \nMay your sky always be clear!
|
||||||
\n • <a href="https://github.com/g4dpz">David A. B. Johnson</a>
|
\n • <a href="https://github.com/g4dpz">David A. B. Johnson</a>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
<item name="android:layout_height">wrap_content</item>
|
<item name="android:layout_height">wrap_content</item>
|
||||||
<item name="android:layout_gravity">center</item>
|
<item name="android:layout_gravity">center</item>
|
||||||
<item name="android:includeFontPadding">false</item>
|
<item name="android:includeFontPadding">false</item>
|
||||||
<item name="android:text">@string/timer_zero</item>
|
<item name="android:text">@string/app_timer</item>
|
||||||
<item name="android:textColor">@color/accent</item>
|
<item name="android:textColor">@color/accent</item>
|
||||||
<item name="android:textSize">@dimen/text_size_app_timer</item>
|
<item name="android:textSize">@dimen/text_size_app_timer</item>
|
||||||
<item name="android:textStyle">bold</item>
|
<item name="android:textStyle">bold</item>
|
||||||
@@ -90,7 +90,7 @@
|
|||||||
<item name="android:layout_width">wrap_content</item>
|
<item name="android:layout_width">wrap_content</item>
|
||||||
<item name="android:layout_height">wrap_content</item>
|
<item name="android:layout_height">wrap_content</item>
|
||||||
<item name="android:includeFontPadding">false</item>
|
<item name="android:includeFontPadding">false</item>
|
||||||
<item name="android:text">@string/trans_link_low</item>
|
<item name="android:text">@string/radio_link_low</item>
|
||||||
<item name="android:textColor">@color/accent</item>
|
<item name="android:textColor">@color/accent</item>
|
||||||
<item name="android:textSize">@dimen/text_size_frequency</item>
|
<item name="android:textSize">@dimen/text_size_frequency</item>
|
||||||
<item name="android:textStyle">bold</item>
|
<item name="android:textStyle">bold</item>
|
||||||
@@ -145,11 +145,6 @@
|
|||||||
<item name="android:textColor">@color/accent</item>
|
<item name="android:textColor">@color/accent</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="WorldMapTitle">
|
|
||||||
<item name="android:textSize">@dimen/text_size_medium</item>
|
|
||||||
<item name="android:textColor">@color/textMain</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="SettingsText">
|
<style name="SettingsText">
|
||||||
<item name="android:textSize">@dimen/text_size_medium</item>
|
<item name="android:textSize">@dimen/text_size_medium</item>
|
||||||
<item name="android:textColor">@color/textMain</item>
|
<item name="android:textColor">@color/textMain</item>
|
||||||
|
|||||||
Reference in new issue
Block a user