diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/MainActivity.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/MainActivity.kt index 166dd566..273f588c 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/MainActivity.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/MainActivity.kt @@ -24,8 +24,6 @@ import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import androidx.navigation.fragment.NavHostFragment -import androidx.navigation.ui.NavigationUI -import androidx.navigation.ui.setupWithNavController import com.rtbishop.look4sat.R import com.rtbishop.look4sat.databinding.ActivityMainBinding import dagger.hilt.android.AndroidEntryPoint @@ -43,14 +41,14 @@ class MainActivity : AppCompatActivity() { val binding = ActivityMainBinding.inflate(layoutInflater) val host = supportFragmentManager.findFragmentById(R.id.navigation_host) as NavHostFragment setContentView(binding.root) - binding.navigationBar.apply { - setupWithNavController(host.navController) - setOnItemSelectedListener { item -> - NavigationUI.onNavDestinationSelected(item, host.navController) - host.navController.popBackStack(item.itemId, inclusive = false) - true - } - } +// binding.navigationBar.apply { +// setupWithNavController(host.navController) +// setOnItemSelectedListener { item -> +// NavigationUI.onNavDestinationSelected(item, host.navController) +// host.navController.popBackStack(item.itemId, inclusive = false) +// true +// } +// } mainViewModel.calculatePasses() } } 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 3ffa5e8a..f70124e5 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 @@ -32,6 +32,7 @@ import com.rtbishop.look4sat.R import com.rtbishop.look4sat.databinding.FragmentEntriesBinding import com.rtbishop.look4sat.domain.model.DataState import com.rtbishop.look4sat.domain.model.SatItem +import com.rtbishop.look4sat.presentation.setNavResult import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint @@ -59,11 +60,15 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) { addItemDecoration(itemDecoration) (itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false } - entriesBack.setOnClickListener { findNavController().navigateUp() } + entriesBackBtn.setOnClickListener { findNavController().navigateUp() } entriesSearch.doOnTextChanged { text, _, _, _ -> viewModel.setQuery(text.toString()) } - entriesMode.setOnClickListener { showModesDialog() } - entriesSelectAll.setOnClickListener { viewModel.selectCurrentItems() } - entriesAccept.setOnClickListener { viewModel.saveSelection() } + entriesModesBtn.setOnClickListener { showModesDialog() } + entriesSelectBtn.setOnClickListener { viewModel.selectCurrentItems(true) } + entriesClearBtn.setOnClickListener { viewModel.selectCurrentItems(false) } + entriesAcceptBtn.setOnClickListener { + setNavResult("selection", viewModel.saveSelection()) + findNavController().popBackStack() + } } viewModel.satData.observe(viewLifecycleOwner) { satData -> handleSatData(satData, binding, adapter) diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesViewModel.kt index fb5da41d..8e127f86 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesViewModel.kt @@ -41,13 +41,13 @@ class EntriesViewModel @Inject constructor( private val itemsWithQuery = currentQuery.switchMap { query -> itemsWithModes.map { items -> filterByQuery(items, query) } } - private var shouldSelectAll = true +// private var shouldSelectAll = true val satData = itemsWithQuery.map { items -> DataState.Success(items) } - fun selectCurrentItems() { + fun selectCurrentItems(selectAll: Boolean) { itemsWithQuery.value?.let { itemsWithQuery -> - updateSelection(itemsWithQuery.map { item -> item.catnum }, shouldSelectAll) - shouldSelectAll = shouldSelectAll.not() + updateSelection(itemsWithQuery.map { item -> item.catnum }, selectAll) +// shouldSelectAll = shouldSelectAll.not() } } @@ -61,15 +61,16 @@ class EntriesViewModel @Inject constructor( } fun setQuery(query: String) { - shouldSelectAll = true +// shouldSelectAll = true currentQuery.value = query } - fun saveSelection() { - itemsFromRepo.value?.let { itemsAll -> + fun saveSelection(): List { + return itemsFromRepo.value?.let { itemsAll -> val filteredItems = itemsAll.filter { item -> item.isSelected } - repository.setEntriesSelection(filteredItems.map { item -> item.catnum }) - } +// repository.setEntriesSelection(filteredItems.map { item -> item.catnum }) + filteredItems.map { item -> item.catnum } + } ?: emptyList() } override fun updateSelection(catNums: List, isSelected: Boolean) { 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 386a7eed..ae29ce32 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 @@ -92,9 +92,9 @@ class MapFragment : Fragment(R.layout.fragment_map) { // add overlays: 0 - GSP, 1 - SatTrack, 2 - SatFootprint, 3 - SatIcons overlays.addAll(Array(4) { FolderOverlay() }) } - mapBack.setOnClickListener { findNavController().navigateUp() } - mapBtnPrev.setOnClickListener { viewModel.scrollSelection(true) } - mapBtnNext.setOnClickListener { viewModel.scrollSelection(false) } + mapBackBtn.setOnClickListener { findNavController().navigateUp() } + mapPrevBtn.setOnClickListener { viewModel.scrollSelection(true) } + mapNextBtn.setOnClickListener { viewModel.scrollSelection(false) } } } 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 00225c5d..8b1ef131 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 @@ -24,6 +24,7 @@ import androidx.fragment.app.viewModels import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.SimpleItemAnimator import com.rtbishop.look4sat.R import com.rtbishop.look4sat.databinding.FragmentPassesBinding @@ -51,59 +52,59 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC val layoutManager = LinearLayoutManager(context) val itemDecoration = DividerItemDecoration(context, layoutManager.orientation) binding.run { - passesList.apply { + passesRecycler.apply { setHasFixedSize(true) this.adapter = adapter this.layoutManager = layoutManager addItemDecoration(itemDecoration) (itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false + addOnScrollListener(object : RecyclerView.OnScrollListener() { + override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { + if (dy > 0 && passesFab.visibility == View.VISIBLE) passesFab.hide() + else if (dy < 0 && passesFab.visibility != View.VISIBLE) passesFab.show() + } + }) } - passesSwipe.apply { - setColorSchemeResources(R.color.surfaceToolbar) - setProgressBackgroundColorSchemeResource(R.color.themeAccent) - setOnRefreshListener { passesViewModel.forceCalculation() } - } - passesFilter.setOnClickListener { navigateToPassPrefs() } - passesSettings.setOnClickListener { navigateToSettings() } + passesRefreshBtn.setOnClickListener { refreshPasses() } + passesMapBtn.setOnClickListener { navigateToMap() } + passesFilterBtn.setOnClickListener { navigateToPassPrefs() } + passesFab.setOnClickListener { navigateToEntries() } + passesSettingsBtn.setOnClickListener { navigateToSettings() } } passesViewModel.passes.observe(viewLifecycleOwner) { passesResult -> - handleNewPasses(passesResult, adapter, binding) + handleNewPasses(passesResult, adapter) } getNavResult>(R.id.nav_passes, "prefs") { prefs -> passesViewModel.saveCalculationPrefs(prefs.first, prefs.second) passesViewModel.forceCalculation(prefs.first, prefs.second) } + getNavResult>(R.id.nav_passes, "selection") { selection -> + passesViewModel.saveSelectionAndRecalc(selection) + } } - private fun handleNewPasses( - dataState: DataState>, - passesAdapter: PassesAdapter, - binding: FragmentPassesBinding - ) { - when (dataState) { + private fun handleNewPasses(state: DataState>, adapter: PassesAdapter) { + when (state) { is DataState.Success -> { - passesAdapter.submitList(dataState.data) + adapter.submitList(state.data) binding.apply { - passesSwipe.isRefreshing = false - passesList.visibility = View.VISIBLE - passesError.visibility = View.INVISIBLE + passesRecycler.visibility = View.VISIBLE + passesErrorMsg.visibility = View.INVISIBLE } - tickMainTimer(dataState.data, binding) + tickMainTimer(state.data, binding) } is DataState.Loading -> { binding.apply { passesTimer.text = 0L.toTimerString() - passesSwipe.isRefreshing = true - passesList.visibility = View.INVISIBLE - passesError.visibility = View.INVISIBLE + passesRecycler.visibility = View.INVISIBLE + passesErrorMsg.visibility = View.INVISIBLE } } else -> { binding.apply { passesTimer.text = 0L.toTimerString() - passesSwipe.isRefreshing = false - passesList.visibility = View.INVISIBLE - passesError.visibility = View.VISIBLE + passesRecycler.visibility = View.INVISIBLE + passesErrorMsg.visibility = View.VISIBLE } } } @@ -126,11 +127,25 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC } } + private fun refreshPasses() { + passesViewModel.forceCalculation() + } + + private fun navigateToMap() { + val direction = PassesFragmentDirections.actionGlobalMapFragment() + findNavController().navigate(direction) + } + private fun navigateToPassPrefs() { val direction = PassesFragmentDirections.actionPassesToPassPrefs() findNavController().navigate(direction) } + private fun navigateToEntries() { + val direction = PassesFragmentDirections.actionGlobalEntriesFragment() + findNavController().navigate(direction) + } + private fun navigateToSettings() { val direction = PassesFragmentDirections.actionGlobalSettingsFragment() findNavController().navigate(direction) diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt index 4c5614d8..561d88fb 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt @@ -57,6 +57,13 @@ class PassesViewModel @Inject constructor( } } + fun saveSelectionAndRecalc(selection: List) { + viewModelScope.launch { + repository.setEntriesSelection(selection) + forceCalculation() + } + } + fun forceCalculation( hoursAhead: Int = settings.getHoursAhead(), minElevation: Double = settings.getMinElevation(), 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 936bd155..c918c77d 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 @@ -53,7 +53,7 @@ class RadarFragment : Fragment(R.layout.fragment_radar) { private fun setupViews() { val context = requireContext() - val adapter = RadiosAdapter() + val adapter = RadioAdapter() val layoutManager = LinearLayoutManager(context) val itemDecoration = DividerItemDecoration(context, layoutManager.orientation) binding.run { @@ -68,7 +68,7 @@ class RadarFragment : Fragment(R.layout.fragment_radar) { } } - private fun setupObservers(radiosAdapter: RadiosAdapter) { + private fun setupObservers(radioAdapter: RadioAdapter) { viewModel.getPass(args.catNum, args.aosTime).observe(viewLifecycleOwner) { pass -> radarView = RadarView(requireContext()).apply { setShowAim(preferences.getUseCompass()) @@ -82,7 +82,7 @@ class RadarFragment : Fragment(R.layout.fragment_radar) { } viewModel.transmitters.observe(viewLifecycleOwner) { list -> if (list.isNotEmpty()) { - radiosAdapter.submitList(list) + radioAdapter.submitList(list) binding.radarRecyclerMsg.text = getString(R.string.trans_data) } else { binding.radarRecyclerMsg.text = getString(R.string.trans_no_data) diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadiosAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadioAdapter.kt similarity index 57% rename from app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadiosAdapter.kt rename to app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadioAdapter.kt index 41f984f8..c58aecad 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadiosAdapter.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadioAdapter.kt @@ -23,11 +23,11 @@ import androidx.recyclerview.widget.AsyncListDiffer import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView import com.rtbishop.look4sat.R -import com.rtbishop.look4sat.databinding.ItemTransBinding +import com.rtbishop.look4sat.databinding.ItemRadioBinding import com.rtbishop.look4sat.domain.model.SatRadio import java.util.* -class RadiosAdapter : RecyclerView.Adapter() { +class RadioAdapter : RecyclerView.Adapter() { private val diffCallback = object : DiffUtil.ItemCallback() { override fun areItemsTheSame(oldItem: SatRadio, newItem: SatRadio): Boolean { @@ -40,9 +40,7 @@ class RadiosAdapter : RecyclerView.Adapter() { } private val differ = AsyncListDiffer(this, diffCallback) - fun submitList(radios: List) { - differ.submitList(radios) - } + fun submitList(items: List) = differ.submitList(items) override fun getItemCount() = differ.currentList.size @@ -54,56 +52,51 @@ class RadiosAdapter : RecyclerView.Adapter() { holder.bind(differ.currentList[position]) } - class TransHolder private constructor(private val binding: ItemTransBinding) : + class TransHolder private constructor(private val binding: ItemRadioBinding) : RecyclerView.ViewHolder(binding.root) { private val divider = 1000000f - private val strNo = itemView.context.getString(R.string.no) - private val strYes = itemView.context.getString(R.string.yes) + 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 formatLink = itemView.context.getString(R.string.trans_link_low) - private val formatLinkNull = itemView.context.getString(R.string.trans_no_link) - private val isInverted = itemView.context.getString(R.string.trans_inverted) + private val inverted = itemView.context.getString(R.string.trans_inverted) fun bind(radio: SatRadio) { - binding.transDesc.text = radio.info - - radio.downlink.let { downlink -> - if (downlink != null) { - val downlinkFreq = downlink / divider - binding.transDownlink.text = - String.format(Locale.ENGLISH, formatLink, downlinkFreq) - } else { - binding.transDownlink.text = formatLinkNull + binding.run { + radioInfo.text = radio.info + radio.downlink.let { downlink -> + if (downlink != null) { + radioDownlink.text = String.format(Locale.ENGLISH, link, downlink / divider) + } else { + radioDownlink.text = linkNull + } } - } - - radio.uplink.let { uplink -> - if (uplink != null) { - val uplinkFreq = uplink / divider - binding.transUplink.text = String.format(Locale.ENGLISH, formatLink, uplinkFreq) - } else { - binding.transUplink.text = formatLinkNull + radio.uplink.let { uplink -> + if (uplink != null) { + radioUplink.text = String.format(Locale.ENGLISH, link, uplink / divider) + } else { + radioUplink.text = linkNull + } + } + if (radio.mode != null) { + radioMode.text = String.format(mode, radio.mode) + } else { + radioMode.text = String.format(mode, stringNo) + } + if (radio.isInverted) { + radioInverted.text = String.format(inverted, stringYes) + } else { + radioInverted.text = String.format(inverted, stringNo) } - } - - if (radio.mode != null) { - binding.transMode.text = String.format(mode, radio.mode) - } else { - binding.transMode.text = String.format(mode, strNo) - } - - if (radio.isInverted) { - binding.transInverted.text = String.format(isInverted, strYes) - } else { - binding.transInverted.text = String.format(isInverted, strNo) } } companion object { fun from(parent: ViewGroup): TransHolder { val inflater = LayoutInflater.from(parent.context) - return TransHolder(ItemTransBinding.inflate(inflater, parent, false)) + return TransHolder(ItemRadioBinding.inflate(inflater, parent, false)) } } } 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 9b6001fb..d1bca874 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 @@ -27,6 +27,7 @@ import android.widget.EditText import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AlertDialog +import androidx.core.widget.NestedScrollView import androidx.core.widget.doOnTextChanged import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels @@ -71,6 +72,11 @@ class SettingsFragment : Fragment(R.layout.fragment_settings) { } private fun setupViews() { + binding.settingsScroll.apply { + setOnScrollChangeListener(NestedScrollView.OnScrollChangeListener { _, _, y, _, newY -> + if (y > newY) binding.settingsFab.hide() else binding.settingsFab.show() + }) + } binding.prefsBack.setOnClickListener { findNavController().navigateUp() } setupAboutCard() setupDataCard() diff --git a/app/src/main/res/drawable/ic_add.xml b/app/src/main/res/drawable/ic_add.xml index 5387bd22..0553ae30 100644 --- a/app/src/main/res/drawable/ic_add.xml +++ b/app/src/main/res/drawable/ic_add.xml @@ -7,4 +7,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/drawable/ic_arrow_left.xml b/app/src/main/res/drawable/ic_arrow_left.xml new file mode 100644 index 00000000..627b772f --- /dev/null +++ b/app/src/main/res/drawable/ic_arrow_left.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_arrow.xml b/app/src/main/res/drawable/ic_arrow_right.xml similarity index 97% rename from app/src/main/res/drawable/ic_arrow.xml rename to app/src/main/res/drawable/ic_arrow_right.xml index 54bb18d6..da896608 100644 --- a/app/src/main/res/drawable/ic_arrow.xml +++ b/app/src/main/res/drawable/ic_arrow_right.xml @@ -7,4 +7,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/drawable/ic_back.xml b/app/src/main/res/drawable/ic_back.xml index 8888096d..c9d2255e 100644 --- a/app/src/main/res/drawable/ic_back.xml +++ b/app/src/main/res/drawable/ic_back.xml @@ -7,4 +7,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/drawable/ic_checkbox.xml b/app/src/main/res/drawable/ic_checkbox.xml new file mode 100644 index 00000000..cbb9c3e5 --- /dev/null +++ b/app/src/main/res/drawable/ic_checkbox.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_checkbox_out.xml b/app/src/main/res/drawable/ic_checkbox_out.xml new file mode 100644 index 00000000..8c7ac2de --- /dev/null +++ b/app/src/main/res/drawable/ic_checkbox_out.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_delete.xml b/app/src/main/res/drawable/ic_delete.xml index 1769cd0d..a458eee2 100644 --- a/app/src/main/res/drawable/ic_delete.xml +++ b/app/src/main/res/drawable/ic_delete.xml @@ -7,4 +7,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/drawable/ic_fdroid.xml b/app/src/main/res/drawable/ic_fdroid.xml index 3bfc3a4d..4e56c7e0 100644 --- a/app/src/main/res/drawable/ic_fdroid.xml +++ b/app/src/main/res/drawable/ic_fdroid.xml @@ -18,4 +18,4 @@ android:strokeColor="#00000000" android:strokeLineCap="round" android:strokeLineJoin="miter" /> - \ No newline at end of file + diff --git a/app/src/main/res/drawable/ic_file.xml b/app/src/main/res/drawable/ic_file.xml index ab99f9a5..62c1d5e9 100644 --- a/app/src/main/res/drawable/ic_file.xml +++ b/app/src/main/res/drawable/ic_file.xml @@ -7,4 +7,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/drawable/ic_filter.xml b/app/src/main/res/drawable/ic_filter.xml index d47884fb..52d95909 100644 --- a/app/src/main/res/drawable/ic_filter.xml +++ b/app/src/main/res/drawable/ic_filter.xml @@ -7,4 +7,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/drawable/ic_github.xml b/app/src/main/res/drawable/ic_github.xml index b68c4f95..978f5031 100644 --- a/app/src/main/res/drawable/ic_github.xml +++ b/app/src/main/res/drawable/ic_github.xml @@ -7,4 +7,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/drawable/ic_list.xml b/app/src/main/res/drawable/ic_list.xml index efb438c4..0eb2804f 100644 --- a/app/src/main/res/drawable/ic_list.xml +++ b/app/src/main/res/drawable/ic_list.xml @@ -7,4 +7,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/drawable/ic_notify_1.xml b/app/src/main/res/drawable/ic_notify_1.xml new file mode 100644 index 00000000..21cb88d1 --- /dev/null +++ b/app/src/main/res/drawable/ic_notify_1.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_notify_2.xml b/app/src/main/res/drawable/ic_notify_2.xml new file mode 100644 index 00000000..c3204226 --- /dev/null +++ b/app/src/main/res/drawable/ic_notify_2.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_play.xml b/app/src/main/res/drawable/ic_play.xml new file mode 100644 index 00000000..bc5dd1e8 --- /dev/null +++ b/app/src/main/res/drawable/ic_play.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_pos.xml b/app/src/main/res/drawable/ic_pos.xml index 40639f15..23dfe20f 100644 --- a/app/src/main/res/drawable/ic_pos.xml +++ b/app/src/main/res/drawable/ic_pos.xml @@ -6,4 +6,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/drawable/ic_prefs.xml b/app/src/main/res/drawable/ic_prefs.xml index 3110f90a..c4149ea4 100644 --- a/app/src/main/res/drawable/ic_prefs.xml +++ b/app/src/main/res/drawable/ic_prefs.xml @@ -7,4 +7,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/drawable/ic_qth.xml b/app/src/main/res/drawable/ic_qth.xml index 99744df9..089e2cbb 100644 --- a/app/src/main/res/drawable/ic_qth.xml +++ b/app/src/main/res/drawable/ic_qth.xml @@ -7,4 +7,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/drawable/ic_refresh.xml b/app/src/main/res/drawable/ic_refresh.xml new file mode 100644 index 00000000..e4d53113 --- /dev/null +++ b/app/src/main/res/drawable/ic_refresh.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_satellite.xml b/app/src/main/res/drawable/ic_satellite.xml index 5ad155d7..6d2743f7 100644 --- a/app/src/main/res/drawable/ic_satellite.xml +++ b/app/src/main/res/drawable/ic_satellite.xml @@ -19,4 +19,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/drawable/ic_splash.xml b/app/src/main/res/drawable/ic_splash.xml index ced383bb..a4627eb9 100644 --- a/app/src/main/res/drawable/ic_splash.xml +++ b/app/src/main/res/drawable/ic_splash.xml @@ -10,4 +10,4 @@ android:fillColor="@color/themeAccent" android:pathData="m104.005,111.936q0.504,0 0.958,-0.063 0.467,-0.076 0.87,-0.176l0,1.674q-0.202,0.101 -0.555,0.214 -0.34,0.113 -0.807,0.201 -0.454,0.101 -1.034,0.164 -0.58,0.063 -1.261,0.063 -0.87,0 -1.576,-0.214 -0.706,-0.201 -1.198,-0.68 -0.492,-0.491 -0.757,-1.259 -0.265,-0.78 -0.265,-1.913l0,-8.244l-1.942,0l0,-1.322q0.832,0 1.488,-0.327 0.656,-0.327 1.047,-0.755 0.794,-0.831 1.185,-2.555l2.144,0l0,3.197l3.304,0l0,1.762l-3.304,0l0,7.98q0,1.171 0.391,1.712 0.404,0.541 1.311,0.541zM85.595,109.922q0,1.108 0.353,1.661 0.353,0.554 1.11,0.554 0.555,0 0.996,-0.227 0.454,-0.239 0.769,-0.667 0.328,-0.428 0.492,-1.032 0.177,-0.617 0.177,-1.372l0,-1.938l-1.16,0.076q-0.769,0.038 -1.299,0.252 -0.53,0.201 -0.845,0.566 -0.315,0.365 -0.454,0.894 -0.139,0.529 -0.139,1.233zM87.89,101.188q-0.492,0 -0.832,0.214 -0.328,0.201 -0.53,0.579 -0.202,0.365 -0.29,0.881 -0.076,0.503 -0.076,1.108 -1.74,0 -2.623,-0.39 -0.87,-0.39 -0.87,-1.334 0,-0.705 0.416,-1.208 0.429,-0.503 1.147,-0.818 0.731,-0.315 1.69,-0.453 0.971,-0.151 2.068,-0.151 1.362,0 2.371,0.239 1.021,0.227 1.69,0.743 0.681,0.516 1.021,1.359 0.34,0.831 0.34,2.039l0,6.57q0,0.529 0.076,0.881 0.088,0.352 0.265,0.566 0.177,0.201 0.479,0.289 0.303,0.088 0.731,0.088l0.101,0l0,1.372l-4.804,0l-0.542,-1.775l-0.227,0q-0.429,0.516 -0.807,0.906 -0.378,0.378 -0.807,0.629 -0.429,0.252 -0.971,0.365 -0.53,0.126 -1.261,0.126 -0.857,0 -1.601,-0.252 -0.731,-0.252 -1.286,-0.768 -0.542,-0.529 -0.857,-1.309 -0.315,-0.793 -0.315,-1.863 0,-2.102 1.438,-3.109 1.45,-1.007 4.35,-1.095l2.118,-0.076l0,-1.422q0,-0.642 -0.05,-1.183 -0.05,-0.541 -0.214,-0.931 -0.164,-0.39 -0.492,-0.604 -0.315,-0.214 -0.845,-0.214zM72.115,114.013q-1.74,0 -2.9,-0.327 -1.16,-0.327 -1.866,-0.843 -0.694,-0.516 -0.996,-1.158 -0.29,-0.642 -0.29,-1.271 0,-0.667 0.24,-1.12 0.252,-0.453 0.656,-0.743 0.416,-0.289 0.933,-0.415 0.53,-0.126 1.097,-0.126 0,1.108 0.265,1.951 0.265,0.831 0.731,1.397 0.467,0.554 1.11,0.843 0.656,0.277 1.425,0.277 0.757,0 1.349,-0.214 0.593,-0.214 1.009,-0.592 0.416,-0.378 0.63,-0.881 0.214,-0.516 0.214,-1.108 0,-0.654 -0.265,-1.158 -0.265,-0.516 -0.807,-0.944 -0.53,-0.441 -1.349,-0.831 -0.807,-0.403 -1.891,-0.856 -1.349,-0.554 -2.282,-1.133 -0.921,-0.592 -1.488,-1.271 -0.567,-0.68 -0.82,-1.473 -0.24,-0.793 -0.24,-1.737 0,-1.183 0.479,-2.14 0.479,-0.957 1.324,-1.636 0.845,-0.68 2.005,-1.045 1.16,-0.365 2.522,-0.365 1.425,0 2.459,0.239 1.034,0.227 1.702,0.629 0.681,0.403 1.009,0.957 0.328,0.541 0.328,1.171 0,0.453 -0.202,0.843 -0.189,0.39 -0.593,0.68 -0.391,0.289 -0.996,0.453 -0.593,0.164 -1.387,0.164 0,-0.541 -0.151,-1.158 -0.139,-0.629 -0.467,-1.158 -0.328,-0.541 -0.857,-0.894 -0.517,-0.352 -1.261,-0.352 -0.517,0 -0.984,0.151 -0.467,0.151 -0.82,0.453 -0.34,0.302 -0.542,0.755 -0.202,0.441 -0.202,1.019 0,0.541 0.177,1.019 0.177,0.478 0.643,0.944 0.479,0.453 1.299,0.919 0.832,0.453 2.144,0.982 1.324,0.541 2.257,1.108 0.933,0.566 1.526,1.221 0.605,0.642 0.87,1.422 0.277,0.768 0.277,1.712 0,1.246 -0.492,2.291 -0.492,1.032 -1.412,1.775 -0.921,0.743 -2.219,1.158 -1.286,0.415 -2.9,0.415zM62.115,108.966l0,1.573q0,0.604 0.164,0.969 0.177,0.365 0.454,0.566 0.29,0.189 0.681,0.252 0.391,0.063 0.82,0.063l0.328,0l0,1.372l-9.054,0l0,-1.372l0.719,0q0.441,0 0.82,-0.063 0.391,-0.063 0.668,-0.252 0.29,-0.201 0.454,-0.566 0.177,-0.365 0.177,-0.969l0,-1.573l-7.15,0l0,-1.573l7.326,-12.032l3.594,0l0,11.906l2.686,0l0,1.699zM58.345,102.761q0,-1.133 0.038,-2.442 0.038,-1.309 0.139,-2.517 -0.126,0.302 -0.404,0.831 -0.277,0.529 -0.593,1.095 -0.315,0.554 -0.605,1.057 -0.29,0.491 -0.441,0.73l-3.48,5.752l5.347,0zM50.855,113.761l-0.366,0q-1.412,0 -2.371,-0.063 -0.958,-0.063 -1.652,-0.289 -0.694,-0.227 -1.198,-0.68 -0.504,-0.466 -1.009,-1.259l-2.295,-3.612 -1.034,0.768l0,2.089q0,0.554 0.177,0.881 0.189,0.327 0.454,0.503 0.277,0.176 0.605,0.239 0.328,0.05 0.605,0.05l0.303,0l0,1.372L34.866,113.761l0,-1.372l0.303,0q0.29,0 0.605,-0.05 0.328,-0.063 0.593,-0.239 0.277,-0.176 0.454,-0.503 0.189,-0.327 0.189,-0.881l0,-13.606q0,-0.516 -0.189,-0.818 -0.177,-0.315 -0.454,-0.478 -0.277,-0.176 -0.605,-0.227 -0.315,-0.05 -0.593,-0.05l-0.303,0l0,-1.359l6.065,0l0,9.943q0,0.352 -0.025,0.818 -0.013,0.453 -0.038,0.868 -0.038,0.491 -0.063,0.994l3.253,-3.637q0.429,-0.478 0.555,-0.755 0.139,-0.289 0.139,-0.478 0,-0.327 -0.353,-0.503 -0.34,-0.189 -0.984,-0.189l0,-1.296l6.507,0l0,1.296q-0.895,0 -1.765,0.529 -0.857,0.516 -1.879,1.661l-1.627,1.85 3.43,5.11q0.681,1.019 1.374,1.51 0.694,0.491 1.311,0.491l0.088,0zM33.517,106.31q0,1.007 -0.29,1.901 -0.29,0.894 -0.82,1.573 -0.517,0.667 -1.261,1.057 -0.731,0.39 -1.627,0.39 -1.198,0 -2.333,-0.73 -1.122,-0.743 -2.055,-2.417 -0.794,1.523 -1.828,2.303 -1.034,0.768 -2.181,0.768 -0.883,0 -1.627,-0.34 -0.744,-0.352 -1.286,-0.982 -0.542,-0.642 -0.845,-1.548 -0.29,-0.919 -0.29,-2.052 0,-1.032 0.29,-1.926 0.29,-0.906 0.82,-1.561 0.53,-0.667 1.274,-1.045 0.744,-0.39 1.664,-0.39 0.593,0 1.173,0.176 0.593,0.164 1.147,0.541 0.567,0.365 1.072,0.944 0.517,0.579 0.946,1.41 0.794,-1.498 1.791,-2.24 0.996,-0.755 2.295,-0.755 0.883,0 1.614,0.352 0.731,0.352 1.248,0.994 0.53,0.642 0.82,1.548 0.29,0.906 0.29,2.026zM29.418,103.113q-0.921,0 -1.652,0.793 -0.731,0.78 -1.475,2.404 0.668,1.598 1.412,2.404 0.744,0.793 1.74,0.793 0.555,0 0.996,-0.252 0.454,-0.252 0.769,-0.692 0.315,-0.441 0.479,-1.019 0.177,-0.592 0.177,-1.259 0,-0.667 -0.177,-1.246 -0.177,-0.579 -0.504,-1.007 -0.315,-0.428 -0.769,-0.667 -0.441,-0.252 -0.996,-0.252zM21.172,109.432q0.87,0 1.639,-0.78 0.769,-0.78 1.488,-2.417 -0.668,-1.598 -1.425,-2.391 -0.757,-0.806 -1.753,-0.806 -0.542,0 -0.984,0.252 -0.429,0.252 -0.744,0.692 -0.303,0.441 -0.479,1.032 -0.164,0.579 -0.164,1.246 0,0.642 0.139,1.221 0.151,0.566 0.454,1.007 0.303,0.428 0.757,0.692 0.454,0.252 1.072,0.252zM0,113.761l0,-1.372l1.084,0q0.29,0 0.53,-0.05 0.24,-0.063 0.416,-0.239 0.177,-0.176 0.277,-0.503 0.101,-0.327 0.101,-0.881l0,-12.322q0,-0.554 -0.101,-0.881 -0.101,-0.327 -0.277,-0.503 -0.177,-0.176 -0.416,-0.227 -0.24,-0.063 -0.53,-0.063l-1.084,0l0,-1.359l8.915,0l0,1.359l-1.084,0q-0.265,0 -0.517,0.063 -0.24,0.05 -0.416,0.214 -0.177,0.164 -0.29,0.478 -0.101,0.302 -0.101,0.818l0,13.895l4.804,0q0.908,0 1.412,-0.566 0.504,-0.579 0.731,-1.674l0.416,-1.938l1.45,0l-0.189,5.752zM72.992,22.376c-5.257,-5.314 -9.076,-11.473 -10.756,-17.343 -0.02,-0.07 -0.035,-0.137 -0.055,-0.207l-50.504,23.741c-0.944,0.444 -1.357,1.584 -0.922,2.548 0.317,0.703 0.998,1.118 1.71,1.118 0.263,0 0.531,-0.057 0.786,-0.177l46.414,-21.818c-1.259,2.404 -2.014,5.114 -2.169,7.986l-23.687,15.866c-0.869,0.582 -1.111,1.773 -0.541,2.659 0.361,0.562 0.961,0.867 1.575,0.867 0.354,0 0.712,-0.102 1.03,-0.315l21.873,-14.652c0.941,5.449 4.122,10.109 8.544,12.959l-36.92,45.919c-0.659,0.82 -0.543,2.03 0.261,2.703 0.35,0.294 0.772,0.436 1.193,0.436 0.544,0 1.083,-0.24 1.455,-0.702l37.474,-46.607c2.056,0.785 4.272,1.235 6.593,1.235 3.314,0 6.428,-0.882 9.139,-2.417l-18.725,42.66c-0.425,0.968 0,2.104 0.947,2.538 0.25,0.114 0.511,0.168 0.769,0.168 0.719,0 1.405,-0.423 1.718,-1.136l20.622,-46.983c-5.886,-1.561 -12.337,-5.499 -17.824,-11.047zM74.851,20.498c5.316,5.374 11.519,9.128 17.044,10.47l1.179,-2.686c0.012,-0.027 0.016,-0.056 0.027,-0.083 1.365,-2.668 2.149,-5.691 2.149,-8.903 0,-10.64 -8.481,-19.295 -18.904,-19.295 -3.444,0 -6.666,0.96 -9.451,2.61l-2.283,1.074c0.054,0.205 0.089,0.402 0.149,0.612 1.559,5.446 5.142,11.199 10.09,16.202z" /> - \ No newline at end of file + diff --git a/app/src/main/res/drawable/ic_sputnik.xml b/app/src/main/res/drawable/ic_sputnik.xml index 13ba8514..81c71e00 100644 --- a/app/src/main/res/drawable/ic_sputnik.xml +++ b/app/src/main/res/drawable/ic_sputnik.xml @@ -10,4 +10,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/drawable/ic_support.xml b/app/src/main/res/drawable/ic_support.xml index 2e421309..63351653 100644 --- a/app/src/main/res/drawable/ic_support.xml +++ b/app/src/main/res/drawable/ic_support.xml @@ -7,4 +7,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/drawable/ic_world.xml b/app/src/main/res/drawable/ic_world.xml index ca1e2df9..2c9d4e34 100644 --- a/app/src/main/res/drawable/ic_world.xml +++ b/app/src/main/res/drawable/ic_world.xml @@ -7,4 +7,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/drawable/item_divider.xml b/app/src/main/res/drawable/item_divider.xml index 2b4c712d..b4bf8bcf 100644 --- a/app/src/main/res/drawable/item_divider.xml +++ b/app/src/main/res/drawable/item_divider.xml @@ -5,4 +5,4 @@ android:width="1dp" android:height="1dp" /> - \ No newline at end of file + diff --git a/app/src/main/res/drawable/rounded_corners.xml b/app/src/main/res/drawable/rounded_corners.xml index ebcb0d84..773768b1 100644 --- a/app/src/main/res/drawable/rounded_corners.xml +++ b/app/src/main/res/drawable/rounded_corners.xml @@ -5,4 +5,4 @@ android:color="@color/surfaceCard" /> - \ No newline at end of file + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index a3add922..f6043fa7 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -20,6 +20,7 @@ android:id="@+id/navigation_bar" android:layout_width="match_parent" android:layout_height="56dp" + android:visibility="gone" app:itemBackground="@color/surfaceToolbar" app:labelVisibilityMode="unlabeled" app:layout_constraintBottom_toBottomOf="parent" @@ -27,4 +28,4 @@ app:layout_constraintStart_toStartOf="parent" app:menu="@menu/navigation_menu" /> - \ No newline at end of file + diff --git a/app/src/main/res/layout/card_prefs_about.xml b/app/src/main/res/layout/card_prefs_about.xml index 4337805b..f3099364 100644 --- a/app/src/main/res/layout/card_prefs_about.xml +++ b/app/src/main/res/layout/card_prefs_about.xml @@ -98,4 +98,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/layout/card_prefs_location.xml b/app/src/main/res/layout/card_prefs_location.xml index 8b734c94..ac991c23 100644 --- a/app/src/main/res/layout/card_prefs_location.xml +++ b/app/src/main/res/layout/card_prefs_location.xml @@ -86,4 +86,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/layout/card_prefs_other.xml b/app/src/main/res/layout/card_prefs_other.xml index d538540c..5baff69e 100644 --- a/app/src/main/res/layout/card_prefs_other.xml +++ b/app/src/main/res/layout/card_prefs_other.xml @@ -58,4 +58,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/layout/card_prefs_tracking.xml b/app/src/main/res/layout/card_prefs_tracking.xml index 1302cf60..e56bc627 100644 --- a/app/src/main/res/layout/card_prefs_tracking.xml +++ b/app/src/main/res/layout/card_prefs_tracking.xml @@ -73,4 +73,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/layout/card_prefs_update.xml b/app/src/main/res/layout/card_prefs_update.xml index 05dc8bb0..958d8a48 100644 --- a/app/src/main/res/layout/card_prefs_update.xml +++ b/app/src/main/res/layout/card_prefs_update.xml @@ -70,4 +70,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/layout/card_prefs_warranty.xml b/app/src/main/res/layout/card_prefs_warranty.xml index 509af336..b52a5c75 100644 --- a/app/src/main/res/layout/card_prefs_warranty.xml +++ b/app/src/main/res/layout/card_prefs_warranty.xml @@ -45,4 +45,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/layout/dialog_sources.xml b/app/src/main/res/layout/dialog_sources.xml index fdcbf517..cff3f174 100644 --- a/app/src/main/res/layout/dialog_sources.xml +++ b/app/src/main/res/layout/dialog_sources.xml @@ -79,4 +79,4 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/sources_recycler" /> - \ No newline at end of file + diff --git a/app/src/main/res/layout/fragment_entries.xml b/app/src/main/res/layout/fragment_entries.xml index c960ed72..5ed129b8 100644 --- a/app/src/main/res/layout/fragment_entries.xml +++ b/app/src/main/res/layout/fragment_entries.xml @@ -1,36 +1,36 @@ - + android:layout_marginEnd="8dp"> @@ -48,18 +48,13 @@ + android:layout_marginBottom="64dp"> - + - +