diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/LocationHandler.kt b/app/src/main/java/com/rtbishop/look4sat/framework/LocationHandler.kt
index 3ec80fa7..aabfb043 100644
--- a/app/src/main/java/com/rtbishop/look4sat/framework/LocationHandler.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/framework/LocationHandler.kt
@@ -74,7 +74,7 @@ class LocationHandler @Inject constructor(
}
} else {
_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)
}
} 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)
}
} 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)
_stationPosition.value = DataState.Success(currentPosition)
} else {
- _stationPosition.value = DataState.Error(context.getString(R.string.pref_pos_qth_error))
+ _stationPosition.value = DataState.Error(context.getString(R.string.location_qth_error))
}
}
diff --git a/app/src/main/java/com/rtbishop/look4sat/injection/AppModule.kt b/app/src/main/java/com/rtbishop/look4sat/injection/AppModule.kt
index a506035f..726a6003 100644
--- a/app/src/main/java/com/rtbishop/look4sat/injection/AppModule.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/injection/AppModule.kt
@@ -27,6 +27,9 @@ import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
+import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.Dispatchers
+import javax.inject.Qualifier
import javax.inject.Singleton
@Module
@@ -56,4 +59,20 @@ object AppModule {
fun provideSharedPreferences(@ApplicationContext context: Context): SharedPreferences {
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
diff --git a/app/src/main/java/com/rtbishop/look4sat/injection/KotlinModule.kt b/app/src/main/java/com/rtbishop/look4sat/injection/KotlinModule.kt
deleted file mode 100644
index 26d73399..00000000
--- a/app/src/main/java/com/rtbishop/look4sat/injection/KotlinModule.kt
+++ /dev/null
@@ -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 .
- */
-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
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesFragment.kt
index c465c737..6bf3b143 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesFragment.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesFragment.kt
@@ -27,7 +27,6 @@ import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.SimpleItemAnimator
-import com.google.android.material.snackbar.Snackbar
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.databinding.FragmentEntriesBinding
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?) {
super.onViewCreated(view, savedInstanceState)
- binding = FragmentEntriesBinding.bind(view)
- setupComponents()
- }
-
- private fun setupComponents() {
- val context = requireContext()
- val adapter = EntriesAdapter(viewModel)
- val layoutManager = GridLayoutManager(context, 2)
- val itemDecoration = DividerItemDecoration(context, layoutManager.orientation)
- binding.run {
+ val entriesAdapter = EntriesAdapter(viewModel)
+ binding = FragmentEntriesBinding.bind(view).apply {
entriesRecycler.apply {
setHasFixedSize(true)
- this.adapter = adapter
- this.layoutManager = layoutManager
- addItemDecoration(itemDecoration)
+ adapter = entriesAdapter
+ layoutManager = GridLayoutManager(requireContext(), 2)
(itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false
+ addItemDecoration(DividerItemDecoration(requireContext(), 1))
addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
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()) }
- entriesModesBtn.setOnClickListener { navigateToModesDialog() }
- entriesSelectBtn.setOnClickListener { viewModel.selectCurrentItems(true) }
- entriesClearBtn.setOnClickListener { viewModel.selectCurrentItems(false) }
+ entriesBtnModes.setOnClickListener {
+ val direction = EntriesFragmentDirections.entriesToModes()
+ findNavController().navigate(direction)
+ }
+ entriesBtnSelect.setOnClickListener { viewModel.selectCurrentItems(true) }
+ entriesBtnClear.setOnClickListener { viewModel.selectCurrentItems(false) }
entriesFab.setOnClickListener {
setNavResult("selection", viewModel.saveSelection())
findNavController().popBackStack()
}
}
viewModel.satData.observe(viewLifecycleOwner) { satData ->
- handleSatData(satData, binding, adapter)
+ handleSatData(satData, entriesAdapter)
}
getNavResult>(R.id.nav_entries, "modes") { modes ->
viewModel.saveSelectedModes(modes)
}
}
- private fun handleSatData(
- dataState: DataState>,
- binding: FragmentEntriesBinding,
- entriesAdapter: EntriesAdapter
- ) {
+ private fun handleSatData(dataState: DataState>, entriesAdapter: EntriesAdapter) {
when (dataState) {
is DataState.Success -> {
entriesAdapter.submitList(dataState.data)
@@ -100,18 +90,7 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) {
binding.entriesProgress.visibility = View.VISIBLE
binding.entriesRecycler.visibility = View.INVISIBLE
}
- is DataState.Error -> {
- 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 -> {}
+ else -> {}
}
}
-
- private fun navigateToModesDialog() {
- val direction = EntriesFragmentDirections.actionEntriesToModes()
- findNavController().navigate(direction)
- }
}
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapFragment.kt
index 79d8f6ad..bf420f56 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapFragment.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapFragment.kt
@@ -98,9 +98,9 @@ class MapFragment : Fragment(R.layout.fragment_map) {
// add overlays: 0 - GSP, 1 - SatTrack, 2 - SatFootprint, 3 - SatIcons
overlays.addAll(Array(4) { FolderOverlay() })
}
- mapBackBtn.setOnClickListener { findNavController().navigateUp() }
- mapPrevBtn.setOnClickListener { viewModel.scrollSelection(true) }
- mapNextBtn.setOnClickListener { viewModel.scrollSelection(false) }
+ mapBtnBack.setOnClickListener { findNavController().navigateUp() }
+ mapBtnPrev.setOnClickListener { viewModel.scrollSelection(true) }
+ mapBtnNext.setOnClickListener { viewModel.scrollSelection(false) }
}
}
@@ -118,7 +118,7 @@ class MapFragment : Fragment(R.layout.fragment_map) {
Marker(mapView).apply {
setInfoWindow(null)
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)
mapView.overlays[0] = this
mapView.invalidate()
@@ -206,13 +206,13 @@ class MapFragment : Fragment(R.layout.fragment_map) {
mapTitle.text = mapData.name
mapDataId.text = String.format(getString(R.string.map_sat_id), mapData.catNum)
mapDataQth.text = String.format(getString(R.string.map_qth), mapData.qthLoc)
- mapDataAlt.text = String.format(getString(R.string.pat_altitude), mapData.altitude)
- mapDataDst.text = String.format(getString(R.string.pat_distance), mapData.range)
- mapDataVel.text = String.format(getString(R.string.pat_osm_vel), mapData.velocity)
+ mapDataAlt.text = String.format(getString(R.string.map_altitude), mapData.altitude)
+ mapDataDst.text = String.format(getString(R.string.map_distance), mapData.range)
+ mapDataVel.text = String.format(getString(R.string.map_velocity), mapData.velocity)
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 =
- String.format(getString(R.string.pat_osm_lon), mapData.osmPos.longitude)
+ String.format(getString(R.string.map_longitude), mapData.osmPos.longitude)
}
binding.mapView.invalidate()
}
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/FilterDialog.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/FilterDialog.kt
index 891e93a8..8e7982bf 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/FilterDialog.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/FilterDialog.kt
@@ -33,7 +33,7 @@ class FilterDialog : AppCompatDialogFragment() {
)
filterHoursEdit.setText(preferences.getHoursAhead().toString())
filterElevEdit.setText(preferences.getMinElevation().toString())
- filterPosBtn.setOnClickListener {
+ filterBtnPos.setOnClickListener {
val hoursAhead = try {
filterHoursEdit.text.toString().toInt()
} catch (exception: Exception) {
@@ -47,7 +47,7 @@ class FilterDialog : AppCompatDialogFragment() {
setNavResult("prefs", Pair(hoursAhead, minElevation))
dismiss()
}
- filterNegBtn.setOnClickListener { dismiss() }
+ filterBtnNeg.setOnClickListener { dismiss() }
}
}
}
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesAdapter.kt
index 9b12dab3..139d05a9 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesAdapter.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesAdapter.kt
@@ -73,7 +73,7 @@ class PassesAdapter(private val clickListener: PassesClickListener) :
private val altFormat = itemView.context.getString(R.string.pass_altitude)
private val losAzFormat = itemView.context.getString(R.string.pass_los)
private val startTimeFormat = itemView.context.getString(R.string.pass_startTime)
- private val elevFormat = itemView.context.getString(R.string.pat_elevation)
+ private val elevFormat = itemView.context.getString(R.string.pass_elevation)
private val endTimeFormat = itemView.context.getString(R.string.pass_endTime)
private val placeholder = itemView.context.getString(R.string.pass_placeholder)
private val timeZoneUTC = TimeZone.getTimeZone("UTC")
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesFragment.kt
index 3c280a73..875c2c7b 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesFragment.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesFragment.kt
@@ -62,17 +62,17 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC
}
})
}
- passesRefreshBtn.setOnClickListener { viewModel.calculatePasses() }
- passesMapBtn.setOnClickListener {
- val dir = PassesFragmentDirections.actionGlobalMapFragment()
+ passesBtnRefresh.setOnClickListener { viewModel.calculatePasses() }
+ passesBtnMap.setOnClickListener {
+ val dir = PassesFragmentDirections.globalToMap()
findNavController().navigate(dir)
}
- passesFilterBtn.setOnClickListener {
- val dir = PassesFragmentDirections.actionPassesToFilter()
+ passesBtnFilter.setOnClickListener {
+ val dir = PassesFragmentDirections.passesToFilter()
findNavController().navigate(dir)
}
- passesSettingsBtn.setOnClickListener {
- val dir = PassesFragmentDirections.actionGlobalSettingsFragment()
+ passesBtnSettings.setOnClickListener {
+ val dir = PassesFragmentDirections.globalToSettings()
findNavController().navigate(dir)
}
setupAnimator()
@@ -82,7 +82,7 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC
override fun navigateToPass(satPass: SatPass) {
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)
}
}
@@ -98,7 +98,7 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC
duration = 875
interpolator = LinearInterpolator()
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 {
if (number > 0) {
passesFab.setOnClickListener {
- val direction = PassesFragmentDirections.actionGlobalEntriesFragment()
+ val direction = PassesFragmentDirections.globalToEntries()
findNavController().navigate(direction)
}
} else {
@@ -140,20 +140,18 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC
passesAdapter.submitList(state.data)
tickMainTimer(state.data)
if (state.data.isNotEmpty()) { // show new passes list
- passesRecycler.visibility = View.VISIBLE
passesEmpty.visibility = View.INVISIBLE
- passesRefreshBtn.isEnabled = true
+ passesBtnRefresh.isEnabled = true
refreshAnimator?.cancel()
} else { // show no passes message
- passesRecycler.visibility = View.INVISIBLE
passesEmpty.visibility = View.VISIBLE
- passesRefreshBtn.isEnabled = true
+ passesBtnRefresh.isEnabled = true
refreshAnimator?.cancel()
}
}
is DataState.Loading -> {
refreshAnimator?.start()
- passesRefreshBtn.isEnabled = false
+ passesBtnRefresh.isEnabled = false
passesTimer.text = 0L.toTimerString()
}
else -> {}
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarFragment.kt
index db2151d9..1502bb0e 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarFragment.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarFragment.kt
@@ -89,23 +89,23 @@ class RadarFragment : Fragment(R.layout.fragment_radar) {
viewModel.transmitters.observe(viewLifecycleOwner) { list ->
if (list.isNotEmpty()) {
radioAdapter.submitList(list)
- radarRecyclerMsg.text = getString(R.string.trans_data)
+ radarEmptyMsg.text = getString(R.string.radio_data)
} else {
- radarRecyclerMsg.text = getString(R.string.trans_no_data)
+ radarEmptyMsg.text = getString(R.string.radio_no_data)
}
radarView?.invalidate()
}
viewModel.orientation.observe(viewLifecycleOwner) { value ->
radarView?.setOrientation(value.first, value.second, value.third)
}
- radarBack.setOnClickListener { findNavController().navigateUp() }
- radarMap.setOnClickListener {
- val direction = RadarFragmentDirections.actionGlobalMapFragment(pass.catNum)
+ radarBtnBack.setOnClickListener { findNavController().navigateUp() }
+ radarBtnMap.setOnClickListener {
+ val direction = RadarFragmentDirections.globalToMap(pass.catNum)
findNavController().navigate(direction)
}
radarBtnNotify.isEnabled = false
radarBtnSettings.setOnClickListener {
- val direction = RadarFragmentDirections.actionGlobalSettingsFragment()
+ val direction = RadarFragmentDirections.globalToSettings()
findNavController().navigate(direction)
}
}
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadioAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadioAdapter.kt
index c58aecad..0e758a9d 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadioAdapter.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadioAdapter.kt
@@ -56,12 +56,12 @@ class RadioAdapter : RecyclerView.Adapter() {
RecyclerView.ViewHolder(binding.root) {
private val divider = 1000000f
- private val stringYes = itemView.context.getString(R.string.yes)
- private val stringNo = itemView.context.getString(R.string.no)
- private val link = itemView.context.getString(R.string.trans_link_low)
- private val linkNull = itemView.context.getString(R.string.trans_no_link)
- private val mode = itemView.context.getString(R.string.trans_mode)
- private val inverted = itemView.context.getString(R.string.trans_inverted)
+ private val stringYes = itemView.context.getString(R.string.radio_string_yes)
+ private val stringNo = itemView.context.getString(R.string.radio_string_no)
+ private val link = itemView.context.getString(R.string.radio_link_low)
+ private val linkNull = itemView.context.getString(R.string.radio_no_link)
+ private val mode = itemView.context.getString(R.string.radio_mode)
+ private val inverted = itemView.context.getString(R.string.radio_inverted)
fun bind(radio: SatRadio) {
binding.run {
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/LocatorDialog.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/LocatorDialog.kt
index 110c7c27..9bfa1fa1 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/LocatorDialog.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/LocatorDialog.kt
@@ -32,11 +32,11 @@ class LocatorDialog : AppCompatDialogFragment() {
WindowManager.LayoutParams.WRAP_CONTENT
)
locatorEdit.setText(preferences.loadStationLocator())
- locatorPosBtn.setOnClickListener {
+ locatorBtnPos.setOnClickListener {
setNavResult("locator", locatorEdit.text.toString())
dismiss()
}
- locatorNegBtn.setOnClickListener { dismiss() }
+ locatorBtnNeg.setOnClickListener { dismiss() }
}
}
}
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/LocationDialog.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/PositionDialog.kt
similarity index 68%
rename from app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/LocationDialog.kt
rename to app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/PositionDialog.kt
index c2d23287..52b85f50 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/LocationDialog.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/PositionDialog.kt
@@ -7,48 +7,48 @@ import android.view.ViewGroup
import android.view.WindowManager
import androidx.appcompat.app.AppCompatDialogFragment
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.presentation.setNavResult
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
@AndroidEntryPoint
-class LocationDialog : AppCompatDialogFragment() {
+class PositionDialog : AppCompatDialogFragment() {
@Inject
lateinit var preferences: ISettings
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?) {
super.onViewCreated(view, state)
- DialogLocationBinding.bind(view).run {
+ DialogPositionBinding.bind(view).run {
dialog?.window?.setBackgroundDrawableResource(R.color.transparent)
dialog?.window?.setLayout(
(resources.displayMetrics.widthPixels * 0.94).toInt(),
WindowManager.LayoutParams.WRAP_CONTENT
)
val location = preferences.loadStationPosition()
- locationLatEdit.setText(location.latitude.toString())
- locationLonEdit.setText(location.longitude.toString())
- locationPosBtn.setOnClickListener {
+ positionLatEdit.setText(location.latitude.toString())
+ positionLonEdit.setText(location.longitude.toString())
+ positionBtnPos.setOnClickListener {
val latitude = try {
- locationLatEdit.text.toString().toDouble()
+ positionLatEdit.text.toString().toDouble()
} catch (exception: Exception) {
180.0
}
val longitude = try {
- locationLonEdit.text.toString().toDouble()
+ positionLonEdit.text.toString().toDouble()
} catch (exception: Exception) {
400.0
}
- setNavResult("location", Pair(latitude, longitude))
+ setNavResult("position", Pair(latitude, longitude))
dismiss()
}
- locationNegBtn.setOnClickListener { dismiss() }
+ positionBtnNeg.setOnClickListener { dismiss() }
}
}
}
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/SettingsFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/SettingsFragment.kt
index 51841d37..2cb56eb8 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/SettingsFragment.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/SettingsFragment.kt
@@ -52,7 +52,7 @@ class SettingsFragment : Fragment(R.layout.fragment_settings) {
when {
permissions[locationFine] == true -> viewModel.setPositionFromGps()
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()
@@ -63,27 +63,28 @@ class SettingsFragment : Fragment(R.layout.fragment_settings) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- binding = FragmentSettingsBinding.bind(view)
- setupComponents()
- setupObservers()
- }
-
- private fun setupComponents() {
- binding.settingsScroll.apply {
- setOnScrollChangeListener(NestedScrollView.OnScrollChangeListener { _, _, y, _, newY ->
- if (y > newY) binding.settingsFab.hide() else binding.settingsFab.show()
+ binding = FragmentSettingsBinding.bind(view).apply {
+ settingsBtnBack.setOnClickListener { findNavController().navigateUp() }
+ settingsScroll.setOnScrollChangeListener(NestedScrollView.OnScrollChangeListener { _, _, y, _, newY ->
+ if (y > newY) settingsFab.hide() else 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()
- setupTrackingCard()
+ setupDataCard()
+ setupRemoteCard()
setupOtherCard()
- setupWarrantyCard()
- }
-
- private fun setupObservers() {
+ setupOutroCard()
viewModel.stationPosition.asLiveData().observe(viewLifecycleOwner) { 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() {
- setPositionText(viewModel.getStationPosition())
- binding.settingsLocation.positionBtnGps.setOnClickListener {
- locationRequest.launch(arrayOf(locationFine, locationCoarse))
- }
- binding.settingsLocation.positionBtnManual.setOnClickListener {
- val action = SettingsFragmentDirections.actionPrefsToLocation()
- findNavController().navigate(action)
- }
- binding.settingsLocation.positionBtnQth.setOnClickListener {
- val action = SettingsFragmentDirections.actionPrefsToLocator()
- findNavController().navigate(action)
- }
- getNavResult>(R.id.nav_settings, "location") { location ->
- viewModel.setStationPosition(location.first, location.second)
- }
- getNavResult(R.id.nav_settings, "locator") { locator ->
- viewModel.setPositionFromQth(locator)
+ binding.run {
+ setPositionText(viewModel.getStationPosition())
+ settingsLocation.locationBtnGps.setOnClickListener {
+ locationRequest.launch(arrayOf(locationFine, locationCoarse))
+ }
+ settingsLocation.locationBtnManual.setOnClickListener {
+ val action = SettingsFragmentDirections.globalToPosition()
+ findNavController().navigate(action)
+ }
+ settingsLocation.locationBtnQth.setOnClickListener {
+ val action = SettingsFragmentDirections.globalToLocator()
+ findNavController().navigate(action)
+ }
+ getNavResult>(R.id.nav_settings, "position") { position ->
+ viewModel.setStationPosition(position.first, position.second)
+ }
+ getNavResult(R.id.nav_settings, "locator") { locator ->
+ viewModel.setPositionFromQth(locator)
+ }
}
}
private fun setupDataCard() {
- binding.settingsData.dataBtnFile.setOnClickListener { contentRequest.launch("*/*") }
- binding.settingsData.dataBtnWeb.setOnClickListener {
- val action = SettingsFragmentDirections.actionPrefsToSources()
- findNavController().navigate(action)
- }
- binding.settingsData.dataBtnClear.setOnClickListener { viewModel.clearData() }
- viewModel.entriesTotal.observe(viewLifecycleOwner) { number ->
- val entriesFormat = getString(R.string.fmt_entries)
- binding.settingsData.dataEntries.text = String.format(entriesFormat, number)
- }
- viewModel.radiosTotal.observe(viewLifecycleOwner) { number ->
- val radiosFormat = getString(R.string.fmt_radios)
- binding.settingsData.dataRadios.text = String.format(radiosFormat, number)
- }
- getNavResult>(R.id.nav_settings, "sources") { sources ->
- viewModel.updateDataFromWeb(sources)
+ binding.run {
+ settingsData.dataBtnFile.setOnClickListener { contentRequest.launch("*/*") }
+ settingsData.dataBtnWeb.setOnClickListener {
+ val action = SettingsFragmentDirections.settingsToSources()
+ findNavController().navigate(action)
+ }
+ settingsData.dataBtnClear.setOnClickListener { viewModel.clearData() }
+ viewModel.entriesTotal.observe(viewLifecycleOwner) { 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.data_radios)
+ settingsData.dataRadios.text = String.format(radiosFormat, number)
+ }
+ getNavResult>(R.id.nav_settings, "sources") { sources ->
+ viewModel.updateDataFromWeb(sources)
+ }
}
}
- private fun setupTrackingCard() {
- binding.settingsTracking.remoteSwitch.apply {
- isChecked = viewModel.getRotatorEnabled()
- binding.settingsTracking.remoteIp.isEnabled = isChecked
- binding.settingsTracking.remoteIpEdit.setText(viewModel.getRotatorServer())
- binding.settingsTracking.remotePort.isEnabled = isChecked
- binding.settingsTracking.remotePortEdit.setText(viewModel.getRotatorPort())
- setOnCheckedChangeListener { _, isChecked ->
- viewModel.setRotatorEnabled(isChecked)
- binding.settingsTracking.remoteIp.isEnabled = isChecked
- binding.settingsTracking.remotePort.isEnabled = isChecked
+ private fun setupRemoteCard() {
+ binding.run {
+ settingsRemote.remoteSwitch.apply {
+ isChecked = viewModel.getRotatorEnabled()
+ settingsRemote.remoteIp.isEnabled = isChecked
+ settingsRemote.remoteIpEdit.setText(viewModel.getRotatorServer())
+ settingsRemote.remotePort.isEnabled = isChecked
+ settingsRemote.remotePortEdit.setText(viewModel.getRotatorPort())
+ setOnCheckedChangeListener { _, isChecked ->
+ viewModel.setRotatorEnabled(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() {
- binding.settingsOther.otherSwitchUtc.apply {
- isChecked = viewModel.getUseUTC()
- setOnCheckedChangeListener { _, isChecked -> viewModel.setUseUTC(isChecked) }
- }
- binding.settingsOther.otherSwitchSweep.apply {
- isChecked = viewModel.getShowSweep()
- setOnCheckedChangeListener { _, isChecked -> viewModel.setShowSweep(isChecked) }
- }
- binding.settingsOther.otherSwitchSensors.apply {
- isChecked = viewModel.getUseCompass()
- setOnCheckedChangeListener { _, isChecked -> viewModel.setUseCompass(isChecked) }
+ binding.run {
+ settingsOther.otherSwitchUtc.apply {
+ isChecked = viewModel.getUseUTC()
+ setOnCheckedChangeListener { _, isChecked -> viewModel.setUseUTC(isChecked) }
+ }
+ settingsOther.otherSwitchSweep.apply {
+ isChecked = viewModel.getShowSweep()
+ setOnCheckedChangeListener { _, isChecked -> viewModel.setShowSweep(isChecked) }
+ }
+ settingsOther.otherSwitchSensors.apply {
+ isChecked = viewModel.getUseCompass()
+ setOnCheckedChangeListener { _, isChecked -> viewModel.setUseCompass(isChecked) }
+ }
}
}
- private fun setupWarrantyCard() {
- binding.settingsWarranty.outroThanks.movementMethod = LinkMovementMethod.getInstance()
- binding.settingsWarranty.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 setupOutroCard() {
+ binding.run {
+ settingsOutro.outroThanks.movementMethod = LinkMovementMethod.getInstance()
+ settingsOutro.outroLicense.movementMethod = LinkMovementMethod.getInstance()
+ }
}
private fun handleStationPosition(pos: DataState) {
when (pos) {
is DataState.Success -> {
setPositionText(pos.data)
- binding.settingsLocation.positionProgress.isIndeterminate = false
+ binding.settingsLocation.locationProgress.isIndeterminate = false
viewModel.setPositionHandled()
- showToast(getString(R.string.pref_pos_success))
+ showToast(getString(R.string.location_success))
}
is DataState.Error -> {
- binding.settingsLocation.positionProgress.isIndeterminate = false
+ binding.settingsLocation.locationProgress.isIndeterminate = false
viewModel.setPositionHandled()
showToast(pos.message.toString())
}
DataState.Loading -> {
- binding.settingsLocation.positionProgress.isIndeterminate = true
+ binding.settingsLocation.locationProgress.isIndeterminate = true
}
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) {
when (state) {
is DataState.Success -> {
binding.settingsData.dataProgress.isIndeterminate = false
viewModel.setUpdateHandled()
- showToast("Data updated successfully")
+ showToast(getString(R.string.data_success))
}
is DataState.Error -> {
binding.settingsData.dataProgress.isIndeterminate = false
viewModel.setUpdateHandled()
- showToast(state.message.toString())
+ showToast(getString(R.string.data_error))
}
is DataState.Loading -> {
binding.settingsData.dataProgress.isIndeterminate = true
diff --git a/app/src/main/res/drawable/ic_clear.xml b/app/src/main/res/drawable/ic_delete.xml
similarity index 100%
rename from app/src/main/res/drawable/ic_clear.xml
rename to app/src/main/res/drawable/ic_delete.xml
diff --git a/app/src/main/res/drawable/ic_file.xml b/app/src/main/res/drawable/ic_file.xml
deleted file mode 100644
index 0e3bf326..00000000
--- a/app/src/main/res/drawable/ic_file.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/ic_filter.xml b/app/src/main/res/drawable/ic_filter.xml
deleted file mode 100644
index 17848623..00000000
--- a/app/src/main/res/drawable/ic_filter.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/ic_modes.xml b/app/src/main/res/drawable/ic_modes.xml
new file mode 100644
index 00000000..e535a17e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_modes.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_gps.xml b/app/src/main/res/drawable/ic_position.xml
similarity index 100%
rename from app/src/main/res/drawable/ic_gps.xml
rename to app/src/main/res/drawable/ic_position.xml
diff --git a/app/src/main/res/drawable/ic_qth.xml b/app/src/main/res/drawable/ic_qth.xml
deleted file mode 100644
index 5c965859..00000000
--- a/app/src/main/res/drawable/ic_qth.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/ic_satellite.xml b/app/src/main/res/drawable/ic_satellite.xml
index e535a17e..9a0aaea0 100644
--- a/app/src/main/res/drawable/ic_satellite.xml
+++ b/app/src/main/res/drawable/ic_satellite.xml
@@ -7,17 +7,8 @@
android:viewportHeight="128">
+ 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" />
-
-
-
+ 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" />
diff --git a/app/src/main/res/drawable/ic_sputnik.xml b/app/src/main/res/drawable/ic_sputnik.xml
deleted file mode 100644
index 9a0aaea0..00000000
--- a/app/src/main/res/drawable/ic_sputnik.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
diff --git a/app/src/main/res/layout/card_about.xml b/app/src/main/res/layout/card_about.xml
index 83b4238a..150334d5 100644
--- a/app/src/main/res/layout/card_about.xml
+++ b/app/src/main/res/layout/card_about.xml
@@ -14,7 +14,7 @@
android:layout_marginStart="8dp"
android:layout_marginTop="4dp"
android:contentDescription="@string/app_name"
- android:src="@drawable/ic_sputnik"
+ android:src="@drawable/ic_satellite"
app:layout_constraintBottom_toBottomOf="@+id/about_version"
app:layout_constraintDimensionRatio="h,1:1"
app:layout_constraintEnd_toStartOf="@+id/about_title"
diff --git a/app/src/main/res/layout/card_data.xml b/app/src/main/res/layout/card_data.xml
index b272064e..f2999e85 100644
--- a/app/src/main/res/layout/card_data.xml
+++ b/app/src/main/res/layout/card_data.xml
@@ -14,7 +14,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginTop="10dp"
- android:text="@string/update_title"
+ android:text="@string/data_title"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -36,7 +36,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
- android:text="@string/fmt_entries"
+ android:text="@string/data_entries"
app:layout_constraintEnd_toStartOf="@+id/data_radios"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintHorizontal_chainStyle="spread_inside"
@@ -48,7 +48,7 @@
style="@style/SettingsText"
android:layout_width="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_constraintEnd_toEndOf="@+id/data_progress"
app:layout_constraintHorizontal_bias="0.5"
diff --git a/app/src/main/res/layout/card_position.xml b/app/src/main/res/layout/card_location.xml
similarity index 66%
rename from app/src/main/res/layout/card_position.xml
rename to app/src/main/res/layout/card_location.xml
index 16c59427..2688c26a 100644
--- a/app/src/main/res/layout/card_position.xml
+++ b/app/src/main/res/layout/card_location.xml
@@ -8,7 +8,7 @@
android:layout_height="match_parent">
+ app:layout_constraintStart_toEndOf="@+id/location_title"
+ app:layout_constraintTop_toTopOf="@+id/location_title" />
+ app:layout_constraintStart_toStartOf="@+id/location_title"
+ app:layout_constraintTop_toBottomOf="@+id/location_title" />
+ app:layout_constraintStart_toEndOf="@+id/location_lat" />
+ app:layout_constraintTop_toBottomOf="@+id/location_lat" />
+ app:layout_constraintStart_toEndOf="@+id/location_btn_gps" />
+ app:layout_constraintStart_toEndOf="@+id/location_btn_manual" />
diff --git a/app/src/main/res/layout/card_remote.xml b/app/src/main/res/layout/card_remote.xml
index 50e28d1d..143a3951 100644
--- a/app/src/main/res/layout/card_remote.xml
+++ b/app/src/main/res/layout/card_remote.xml
@@ -15,7 +15,7 @@
android:layout_marginStart="12dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="12dp"
- android:text="@string/tracking_title"
+ android:text="@string/remote_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -26,7 +26,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:minHeight="42dp"
- android:text="@string/tracking_switch"
+ android:text="@string/remote_switch"
app:layout_constraintEnd_toEndOf="@+id/remote_title"
app:layout_constraintStart_toStartOf="@+id/remote_title"
app:layout_constraintTop_toBottomOf="@+id/remote_title"
@@ -48,7 +48,7 @@
android:id="@+id/remote_ip_edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:hint="@string/tracking_ip_hint"
+ android:hint="@string/remote_ip_hint"
android:textColorHint="@color/textMain" />
@@ -66,7 +66,7 @@
android:id="@+id/remote_port_edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:hint="@string/tracking_port_hint"
+ android:hint="@string/remote_port_hint"
android:textColorHint="@color/textMain" />
diff --git a/app/src/main/res/layout/dialog_filter.xml b/app/src/main/res/layout/dialog_filter.xml
index 5f5c6ba0..cb09370c 100644
--- a/app/src/main/res/layout/dialog_filter.xml
+++ b/app/src/main/res/layout/dialog_filter.xml
@@ -16,11 +16,11 @@
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:minHeight="48dp"
- android:text="@string/dialog_filter_passes"
+ android:text="@string/filter_title"
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_constraintStart_toStartOf="@+id/filter_neg_btn"
+ app:layout_constraintStart_toStartOf="@+id/filter_btn_neg"
app:layout_constraintTop_toTopOf="parent" />
+ app:layout_constraintStart_toEndOf="@+id/filter_btn_neg" />
diff --git a/app/src/main/res/layout/dialog_locator.xml b/app/src/main/res/layout/dialog_locator.xml
index b13c0549..aa4230d4 100644
--- a/app/src/main/res/layout/dialog_locator.xml
+++ b/app/src/main/res/layout/dialog_locator.xml
@@ -16,11 +16,11 @@
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:minHeight="48dp"
- android:text="@string/dialog_filter_passes"
+ android:text="@string/locator_title"
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_constraintStart_toStartOf="@+id/locator_neg_btn"
+ app:layout_constraintStart_toStartOf="@+id/locator_btn_neg"
app:layout_constraintTop_toTopOf="parent" />
+ app:layout_constraintStart_toEndOf="@+id/locator_btn_neg" />
diff --git a/app/src/main/res/layout/dialog_modes.xml b/app/src/main/res/layout/dialog_modes.xml
index 5960a734..ef6884c3 100644
--- a/app/src/main/res/layout/dialog_modes.xml
+++ b/app/src/main/res/layout/dialog_modes.xml
@@ -15,7 +15,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
- android:text="@string/entries_modes"
+ android:text="@string/modes_title"
android:minHeight="48dp"
app:layout_constraintEnd_toEndOf="@+id/modes_btn_pos"
app:layout_constraintStart_toStartOf="@+id/modes_btn_neg"
diff --git a/app/src/main/res/layout/dialog_location.xml b/app/src/main/res/layout/dialog_position.xml
similarity index 54%
rename from app/src/main/res/layout/dialog_location.xml
rename to app/src/main/res/layout/dialog_position.xml
index 617c228c..e64bbbdb 100644
--- a/app/src/main/res/layout/dialog_location.xml
+++ b/app/src/main/res/layout/dialog_position.xml
@@ -16,53 +16,82 @@
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:minHeight="48dp"
- android:text="@string/dialog_filter_passes"
- app:layout_constraintBottom_toTopOf="@+id/location_lat_layout"
- app:layout_constraintEnd_toEndOf="@+id/location_pos_btn"
- app:layout_constraintStart_toStartOf="@+id/location_neg_btn"
+ android:text="@string/position_title"
+ app:layout_constraintBottom_toTopOf="@+id/position_lat_text"
+ app:layout_constraintEnd_toEndOf="@+id/position_btn_pos"
+ app:layout_constraintHorizontal_bias="0.5"
+ app:layout_constraintStart_toStartOf="@+id/position_btn_neg"
app:layout_constraintTop_toTopOf="parent" />
-
+
+
+ app:layout_constraintBottom_toTopOf="@+id/position_lon_text"
+ 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_text">
+
+
+ app:layout_constraintBottom_toTopOf="@+id/position_btn_neg"
+ app:layout_constraintEnd_toEndOf="@+id/position_lat_layout"
+ app:layout_constraintHorizontal_bias="0.5"
+ app:layout_constraintStart_toStartOf="@+id/position_lat_layout"
+ app:layout_constraintTop_toBottomOf="@+id/position_lon_text">
@@ -70,7 +99,7 @@
+ app:layout_constraintTop_toBottomOf="@+id/position_lon_layout" />
+ app:layout_constraintStart_toEndOf="@+id/position_btn_neg" />
diff --git a/app/src/main/res/layout/fragment_entries.xml b/app/src/main/res/layout/fragment_entries.xml
index 8173b5eb..ff1ea97f 100644
--- a/app/src/main/res/layout/fragment_entries.xml
+++ b/app/src/main/res/layout/fragment_entries.xml
@@ -9,7 +9,7 @@
style="@style/Toolbar">
+ android:src="@drawable/ic_modes" />
@@ -63,7 +63,7 @@
style="@style/BottomBar">