Various changes to layouts and strings

This commit is contained in:
Arty Bishop committed 2022-03-01 18:32:59 +00:00
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
@@ -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")
@@ -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 {
@@ -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() }
} }
} }
} }
@@ -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() }
} }
} }
} }
@@ -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
-11
View File
@@ -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>
-11
View File
@@ -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>
+23
View File
@@ -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>
-11
View File
@@ -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>
+2 -11
View File
@@ -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>
-14
View File
@@ -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>
+1 -1
View File
@@ -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"
+3 -3
View File
@@ -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"
@@ -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>
+4 -4
View File
@@ -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>
+13 -13
View File
@@ -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>
+13 -13
View File
@@ -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>
+1 -1
View File
@@ -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"
@@ -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>
+5 -5
View File
@@ -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"
+12 -12
View File
@@ -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>
+5 -5
View File
@@ -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" />
+4 -4
View File
@@ -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" />
+11 -11
View File
@@ -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"
+5 -5
View File
@@ -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"
+1 -1
View File
@@ -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
+26 -26
View File
@@ -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>
+67 -70
View File
@@ -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Желаю всегда чистого неба над головой!
+65 -83
View File
@@ -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>
+2 -7
View File
@@ -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>