Further changes to layouts and fragments

This commit is contained in:
Arty Bishop committed 2022-01-22 20:36:59 +00:00
1 parent f34cb8eb3c
commit f9ebe84012
23 files changed
+414 -500

No files matched your search

@@ -1,44 +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.presentation
import android.graphics.Canvas
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
class ItemDivider(private val resId: Int) : RecyclerView.ItemDecoration() {
override fun onDrawOver(canvas: Canvas, parent: RecyclerView) {
ContextCompat.getDrawable(parent.context, resId)?.let { drawable ->
val leftPos = parent.paddingLeft
val rightPos = parent.width - parent.paddingRight
parent.adapter?.itemCount?.let { childCount ->
for (i in 0 until childCount) {
if (i == (childCount - 1)) continue
parent.getChildAt(i)?.let { view ->
val params = view.layoutParams as RecyclerView.LayoutParams
val topPos = view.bottom + params.bottomMargin
val bottomPos = topPos + drawable.intrinsicHeight
drawable.setBounds(leftPos, topPos, rightPos, bottomPos)
drawable.draw(canvas)
}
}
}
}
}
}
@@ -22,9 +22,6 @@ import android.content.pm.ActivityInfo
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.ui.setupWithNavController
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.databinding.ActivityMainBinding
import dagger.hilt.android.AndroidEntryPoint
@@ -36,9 +33,6 @@ class Look4SatActivity : AppCompatActivity() {
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
super.onCreate(savedInstanceState)
installSplashScreen()
val binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
val navHost = supportFragmentManager.findFragmentById(R.id.main_nav_host) as NavHostFragment
binding.mainNavBottom.setupWithNavController(navHost.navController)
setContentView(ActivityMainBinding.inflate(layoutInflater).root)
}
}
@@ -31,7 +31,6 @@ 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.ItemDivider
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
@@ -52,7 +51,7 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) {
adapter = entriesAdapter
layoutManager = GridLayoutManager(requireContext(), 2)
(itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false
addItemDecoration(ItemDivider(R.drawable.divider_dark))
// addItemDecoration(ItemDivider(R.drawable.divider_dark))
}
entriesBack.setOnClickListener { findNavController().navigateUp() }
entriesSearch.doOnTextChanged { text, _, _, _ -> viewModel.setQuery(text.toString()) }
@@ -23,8 +23,7 @@ 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.ItemPassGeoBinding
import com.rtbishop.look4sat.databinding.ItemPassLeoBinding
import com.rtbishop.look4sat.databinding.ItemPassBinding
import com.rtbishop.look4sat.domain.predict.SatPass
import java.text.SimpleDateFormat
import java.util.*
@@ -53,56 +52,57 @@ class PassesAdapter(private val isUTC: Boolean, private val clickListener: Passe
override fun getItemCount() = differ.currentList.size
override fun getItemViewType(position: Int): Int {
return if (differ.currentList[position].isDeepSpace) 1
else 0
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return if (viewType == 0) {
SatPassLeoHolder.from(parent)
} else {
SatPassGeoHolder.from(parent)
}
return PassHolder.from(parent)
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
if (holder.itemViewType == 0) {
(holder as SatPassLeoHolder).bind(differ.currentList[position], clickListener, isUTC)
} else {
(holder as SatPassGeoHolder).bind(differ.currentList[position], clickListener)
}
(holder as PassHolder).bind(differ.currentList[position], clickListener, isUTC)
}
class SatPassLeoHolder private constructor(private val binding: ItemPassLeoBinding) :
class PassHolder private constructor(private val binding: ItemPassBinding) :
RecyclerView.ViewHolder(binding.root) {
private val satIdFormat = itemView.context.getString(R.string.pass_satId)
private val tcaAzFormat = itemView.context.getString(R.string.pass_tcaAz)
private val aosAzFormat = itemView.context.getString(R.string.pass_aosAz)
private val maxElFormat = itemView.context.getString(R.string.pass_maxEl)
private val losAzFormat = itemView.context.getString(R.string.pass_losAz)
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 maxElFormat = 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")
private val startFormat = SimpleDateFormat(startTimeFormat, Locale.getDefault())
private val endFormat = SimpleDateFormat(endTimeFormat, Locale.getDefault())
fun bind(satPass: SatPass, listener: PassesClickListener, shouldUseUTC: Boolean) {
binding.apply {
if (shouldUseUTC) {
startFormat.timeZone = timeZoneUTC
endFormat.timeZone = timeZoneUTC
if (satPass.isDeepSpace) {
passName.text = satPass.name
passId.text = String.format(satIdFormat, satPass.catNum)
passAos.text = String.format(aosAzFormat, satPass.aosAzimuth)
passAltitude.text = String.format(altFormat, satPass.altitude)
passLos.text = String.format(losAzFormat, satPass.losAzimuth)
passStart.text = placeholder
passElev.text = String.format(elevFormat, satPass.maxElevation)
passEnd.text = placeholder
passProgress.progress = 100
} else {
if (shouldUseUTC) {
startFormat.timeZone = timeZoneUTC
endFormat.timeZone = timeZoneUTC
}
passName.text = satPass.name
passId.text = String.format(satIdFormat, satPass.catNum)
passAos.text = String.format(aosAzFormat, satPass.aosAzimuth)
passAltitude.text = String.format(altFormat, satPass.altitude)
passLos.text = String.format(losAzFormat, satPass.losAzimuth)
passStart.text = startFormat.format(Date(satPass.aosTime))
passElev.text = String.format(maxElFormat, satPass.maxElevation)
passEnd.text = endFormat.format(Date(satPass.losTime))
passProgress.progress = satPass.progress
}
passLeoName.text = satPass.name
passLeoId.text = String.format(satIdFormat, satPass.catNum)
passLeoAos.text = String.format(aosAzFormat, satPass.aosAzimuth)
passLeoElev.text = String.format(maxElFormat, satPass.maxElevation)
passLeoLos.text = String.format(losAzFormat, satPass.losAzimuth)
passLeoStart.text = startFormat.format(Date(satPass.aosTime))
passLeoTca.text = String.format(tcaAzFormat, satPass.tcaAzimuth)
passLeoEnd.text = endFormat.format(Date(satPass.losTime))
passLeoProgress.progress = satPass.progress
}
itemView.setOnClickListener {
@@ -111,39 +111,9 @@ class PassesAdapter(private val isUTC: Boolean, private val clickListener: Passe
}
companion object {
fun from(parent: ViewGroup): SatPassLeoHolder {
fun from(parent: ViewGroup): PassHolder {
val inflater = LayoutInflater.from(parent.context)
return SatPassLeoHolder(ItemPassLeoBinding.inflate(inflater, parent, false))
}
}
}
class SatPassGeoHolder private constructor(private val binding: ItemPassGeoBinding) :
RecyclerView.ViewHolder(binding.root) {
private val satIdFormat = itemView.context.getString(R.string.pass_satId)
private val azFormat = itemView.context.getString(R.string.pat_azimuth)
private val altFormat = itemView.context.getString(R.string.pat_altitude)
private val elevFormat = itemView.context.getString(R.string.pat_elevation)
fun bind(satPass: SatPass, listener: PassesClickListener) {
binding.apply {
passGeoName.text = satPass.name
passGeoId.text = String.format(satIdFormat, satPass.catNum)
passGeoAz.text = String.format(azFormat, satPass.tcaAzimuth)
passGeoAlt.text = String.format(altFormat, satPass.altitude)
passGeoEl.text = String.format(elevFormat, satPass.maxElevation)
}
itemView.setOnClickListener {
listener.navigateToPass(satPass)
}
}
companion object {
fun from(parent: ViewGroup): SatPassGeoHolder {
val inflater = LayoutInflater.from(parent.context)
return SatPassGeoHolder(ItemPassGeoBinding.inflate(inflater, parent, false))
return PassHolder(ItemPassBinding.inflate(inflater, parent, false))
}
}
}
@@ -30,7 +30,6 @@ import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.databinding.FragmentPassesBinding
import com.rtbishop.look4sat.domain.model.DataState
import com.rtbishop.look4sat.domain.predict.SatPass
import com.rtbishop.look4sat.presentation.ItemDivider
import com.rtbishop.look4sat.presentation.getNavResult
import com.rtbishop.look4sat.presentation.navigateSafe
import com.rtbishop.look4sat.presentation.toTimerString
@@ -50,13 +49,12 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC
private fun setupComponents(view: View) {
val passesAdapter = PassesAdapter(passesViewModel.shouldUseUTC(), this)
val binding = FragmentPassesBinding.bind(view).apply {
passesRecycler.apply {
passesList.apply {
setHasFixedSize(true)
adapter = passesAdapter
isVerticalScrollBarEnabled = false
layoutManager = LinearLayoutManager(context)
(itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false
addItemDecoration(ItemDivider(R.drawable.divider_dark))
addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
if (dy > 0 && passesFab.visibility == View.VISIBLE) passesFab.hide()
@@ -91,27 +89,24 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC
passesAdapter.submitList(dataState.data)
binding.apply {
passesSwipe.isRefreshing = false
passesList.visibility = View.VISIBLE
passesError.visibility = View.INVISIBLE
passesProgress.visibility = View.INVISIBLE
passesRecycler.visibility = View.VISIBLE
}
tickMainTimer(dataState.data, binding)
}
is DataState.Loading -> {
binding.apply {
passesSwipe.isRefreshing = true
passesTimer.text = 0L.toTimerString()
passesSwipe.isRefreshing = true
passesList.visibility = View.INVISIBLE
passesError.visibility = View.INVISIBLE
passesRecycler.visibility = View.INVISIBLE
passesProgress.visibility = View.VISIBLE
}
}
else -> {
binding.apply {
passesSwipe.isRefreshing = false
passesTimer.text = 0L.toTimerString()
passesProgress.visibility = View.INVISIBLE
passesRecycler.visibility = View.INVISIBLE
passesSwipe.isRefreshing = false
passesList.visibility = View.INVISIBLE
passesError.visibility = View.VISIBLE
}
}
@@ -30,7 +30,6 @@ import com.rtbishop.look4sat.databinding.FragmentRadarBinding
import com.rtbishop.look4sat.domain.predict.SatPass
import com.rtbishop.look4sat.domain.predict.SatPos
import com.rtbishop.look4sat.framework.SettingsProvider
import com.rtbishop.look4sat.presentation.ItemDivider
import com.rtbishop.look4sat.presentation.navigateSafe
import com.rtbishop.look4sat.presentation.toTimerString
import dagger.hilt.android.AndroidEntryPoint
@@ -54,7 +53,7 @@ class RadarFragment : Fragment(R.layout.fragment_radar) {
isVerticalScrollBarEnabled = false
layoutManager = LinearLayoutManager(context)
(itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false
addItemDecoration(ItemDivider(R.drawable.divider_dark))
// addItemDecoration(ItemDivider(R.drawable.divider_dark))
}
setupObservers(transAdapter, this)
}
@@ -135,7 +135,7 @@ class RadarView(context: Context) : View(context) {
isTrackCreated = true
}
canvas.drawColor(ContextCompat.getColor(context, R.color.surfaceBg))
canvas.drawColor(ContextCompat.getColor(context, R.color.surfaceCard))
drawRadarCircle(canvas, cx, cy, radarRadius)
drawRadarCross(canvas, cx, cy, radarRadius)
drawRadarText(canvas, cx, radarRadius)
@@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<size
android:width="1dp"
android:height="1dp" />
<solid android:color="@color/surfaceBg" />
</shape>
</item>
</layer-list>
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="0dp"
android:color="@color/surfaceCard" />
<solid android:color="@color/surfaceCard" />
<corners android:radius="@dimen/card_corner" />
</shape>
+10 -30
View File
@@ -1,33 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.fragment.app.FragmentContainerView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_root"
android:id="@+id/main_nav_host"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.fragment.app.FragmentContainerView
android:id="@+id/main_nav_host"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="0dp"
app:defaultNavHost="true"
app:layout_constraintBottom_toTopOf="@+id/main_nav_bottom"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/nav_graph" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/main_nav_bottom"
android:layout_width="match_parent"
android:layout_height="48dp"
android:elevation="8dp"
android:visibility="visible"
app:itemBackground="@color/surfaceToolbar"
app:labelVisibilityMode="labeled"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:menu="@menu/nav_menu" />
</androidx.constraintlayout.widget.ConstraintLayout>
android:layout_height="match_parent"
app:defaultNavHost="true"
app:layout_constraintBottom_toTopOf="@+id/main_nav_bottom"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/nav_graph" />
+54 -42
View File
@@ -3,12 +3,14 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/entries_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/surfaceCard">
android:layout_height="match_parent">
<androidx.cardview.widget.CardView
android:id="@+id/entries_toolbar"
style="@style/Toolbar"
style="@style/ToolbarCard"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -16,7 +18,6 @@
<ImageButton
android:id="@+id/entries_back"
style="@style/ToolbarButton"
android:layout_marginStart="4dp"
android:src="@drawable/ic_back"
app:layout_constraintBottom_toBottomOf="@+id/entries_toolbar"
app:layout_constraintStart_toStartOf="@+id/entries_toolbar"
@@ -47,65 +48,76 @@
<ImageButton
android:id="@+id/entries_mode"
style="@style/ToolbarButton"
android:layout_marginEnd="4dp"
android:src="@drawable/ic_satellite"
app:layout_constraintBottom_toBottomOf="@+id/entries_toolbar"
app:layout_constraintEnd_toEndOf="@+id/entries_toolbar"
app:layout_constraintTop_toTopOf="@+id/entries_toolbar" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/entries_recycler"
<androidx.cardview.widget.CardView
android:id="@+id/entries_list_card"
style="@style/ToolbarCard"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="2dp"
app:layout_constraintBottom_toTopOf="@+id/entries_cancel"
android:layout_marginStart="7dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="7dp"
android:layout_marginBottom="3dp"
android:backgroundTint="@color/surfaceBg"
android:clipChildren="true"
app:cardElevation="0dp"
app:layout_constraintBottom_toTopOf="@+id/entries_select_all"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/entries_toolbar" />
app:layout_constraintTop_toBottomOf="@+id/entries_toolbar">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/entries_recycler"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.cardview.widget.CardView>
<ProgressBar
android:id="@+id/entries_progress"
style="@android:style/Widget.DeviceDefault.Light.ProgressBar.Large"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="@+id/entries_recycler"
app:layout_constraintEnd_toEndOf="@+id/entries_recycler"
app:layout_constraintStart_toStartOf="@+id/entries_recycler"
app:layout_constraintBottom_toBottomOf="@+id/entries_list_card"
app:layout_constraintEnd_toEndOf="@+id/entries_list_card"
app:layout_constraintStart_toStartOf="@+id/entries_list_card"
app:layout_constraintTop_toBottomOf="@+id/entries_toolbar" />
<Button
android:id="@+id/entries_cancel"
style="@style/DialogButton"
<com.google.android.material.button.MaterialButton
android:id="@+id/entries_select_all"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="4dp"
android:layout_marginBottom="3dp"
android:backgroundTint="@color/surfaceCard"
android:text="@string/entries_select_all"
android:textAllCaps="false"
android:textSize="16sp"
app:cornerRadius="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/entries_accept"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent" />
<com.google.android.material.button.MaterialButton
android:id="@+id/entries_accept"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginBottom="2dp"
android:text="@string/btn_cancel"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/entries_select_all"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toStartOf="parent" />
<Button
android:id="@+id/entries_select_all"
style="@style/DialogButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/entries_select_all"
app:layout_constraintBaseline_toBaselineOf="@+id/entries_cancel"
app:layout_constraintEnd_toStartOf="@+id/entries_accept"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/entries_cancel" />
<Button
android:id="@+id/entries_accept"
style="@style/DialogButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="4dp"
android:layout_marginEnd="8dp"
android:backgroundTint="@color/surfaceCard"
android:text="@string/btn_accept"
app:layout_constraintBaseline_toBaselineOf="@+id/entries_cancel"
android:textAllCaps="false"
android:textSize="16sp"
app:cornerRadius="8dp"
app:layout_constraintBaseline_toBaselineOf="@+id/entries_select_all"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/entries_select_all" />
+141 -106
View File
@@ -9,7 +9,10 @@
<androidx.cardview.widget.CardView
android:id="@+id/map_toolbar"
style="@style/Toolbar"
style="@style/ToolbarCard"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -17,7 +20,6 @@
<ImageButton
android:id="@+id/map_back"
style="@style/ToolbarButton"
android:layout_marginStart="4dp"
android:src="@drawable/ic_back"
app:layout_constraintBottom_toBottomOf="@+id/map_toolbar"
app:layout_constraintStart_toStartOf="@+id/map_toolbar"
@@ -33,127 +35,143 @@
app:layout_constraintStart_toStartOf="@+id/map_toolbar"
app:layout_constraintTop_toTopOf="@+id/map_toolbar" />
<org.osmdroid.views.MapView
android:id="@+id/map_view"
<androidx.cardview.widget.CardView
android:id="@+id/map_card"
style="@style/ToolbarCard"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="2dp"
android:clipChildren="true"
app:layout_constraintBottom_toTopOf="@+id/map_btn_prev"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/map_toolbar" />
app:layout_constraintTop_toBottomOf="@+id/map_toolbar">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/map_data_root"
android:layout_width="match_parent"
<org.osmdroid.views.MapView
android:id="@+id/map_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:elevation="16dp" />
</androidx.cardview.widget.CardView>
<TextView
android:id="@+id/map_data_name"
style="@style/MapInfoText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@color/mapInfoLayout"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginStart="4dp"
android:layout_marginEnd="4dp"
android:ellipsize="end"
android:gravity="center_horizontal"
android:maxLines="1"
android:text="@string/pat_osm_idName"
app:layout_constraintBottom_toTopOf="@+id/map_card_info"
app:layout_constraintEnd_toStartOf="@+id/map_btn_next"
app:layout_constraintStart_toEndOf="@+id/map_btn_prev"
app:layout_constraintTop_toBottomOf="@+id/map_card" />
<androidx.cardview.widget.CardView
android:id="@+id/map_card_info"
style="@style/ToolbarCard"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="4dp"
app:layout_constraintBottom_toTopOf="@+id/map_copyright"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<TextView
android:id="@+id/map_data_lat"
style="@style/MapInfoText"
android:layout_width="wrap_content"
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/map_data_root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:text="@string/pat_osm_lat"
app:layout_constraintStart_toStartOf="@+id/map_data_name"
app:layout_constraintTop_toBottomOf="@+id/map_data_name" />
<TextView
android:id="@+id/map_data_lon"
style="@style/MapInfoText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:text="@string/pat_osm_lon"
app:layout_constraintStart_toStartOf="@+id/map_data_lat"
app:layout_constraintTop_toBottomOf="@+id/map_data_lat" />
<TextView
android:id="@+id/map_data_qth"
style="@style/MapInfoText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:text="@string/map_qth"
app:layout_constraintBottom_toTopOf="@+id/map_copyright"
app:layout_constraintStart_toStartOf="@+id/map_data_lon"
app:layout_constraintTop_toBottomOf="@+id/map_data_lon" />
<TextView
android:id="@+id/map_data_alt"
style="@style/MapInfoText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pat_altitude"
app:layout_constraintBaseline_toBaselineOf="@+id/map_data_lat"
app:layout_constraintEnd_toEndOf="@+id/map_data_name" />
<TextView
android:id="@+id/map_data_dst"
style="@style/MapInfoText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pat_distance"
app:layout_constraintBaseline_toBaselineOf="@+id/map_data_lon"
app:layout_constraintEnd_toEndOf="@+id/map_data_alt" />
<TextView
android:id="@+id/map_data_vel"
style="@style/MapInfoText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pat_osm_vel"
app:layout_constraintBaseline_toBaselineOf="@+id/map_data_qth"
app:layout_constraintEnd_toEndOf="@+id/map_data_dst" />
<TextView
android:id="@+id/map_data_name"
style="@style/MapInfoText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="4dp"
android:layout_marginEnd="8dp"
android:ellipsize="end"
android:gravity="center_horizontal"
android:maxLines="1"
android:text="@string/pat_osm_idName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/map_copyright"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="6dp"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:text="@string/map_copyright"
android:textColor="@color/themeLight"
android:textSize="13sp"
android:background="@color/mapInfoLayout"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/map_data_vel"
app:layout_constraintStart_toStartOf="@+id/map_data_qth" />
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<TextView
android:id="@+id/map_data_lat"
style="@style/MapInfoText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="6dp"
android:text="@string/pat_osm_lat"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/map_data_lon"
style="@style/MapInfoText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="@string/pat_osm_lon"
app:layout_constraintStart_toStartOf="@+id/map_data_lat"
app:layout_constraintTop_toBottomOf="@+id/map_data_lat" />
<TextView
android:id="@+id/map_data_qth"
style="@style/MapInfoText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:layout_marginBottom="8dp"
android:text="@string/map_qth"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@+id/map_data_lon"
app:layout_constraintTop_toBottomOf="@+id/map_data_lon" />
<TextView
android:id="@+id/map_data_alt"
style="@style/MapInfoText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:text="@string/pat_altitude"
app:layout_constraintBaseline_toBaselineOf="@+id/map_data_lat"
app:layout_constraintEnd_toEndOf="parent" />
<TextView
android:id="@+id/map_data_dst"
style="@style/MapInfoText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pat_distance"
app:layout_constraintBaseline_toBaselineOf="@+id/map_data_lon"
app:layout_constraintEnd_toEndOf="@+id/map_data_alt" />
<TextView
android:id="@+id/map_data_vel"
style="@style/MapInfoText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pat_osm_vel"
app:layout_constraintBaseline_toBaselineOf="@+id/map_data_qth"
app:layout_constraintEnd_toEndOf="@+id/map_data_dst" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout>
<ImageButton
android:id="@+id/map_btn_prev"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginStart="4dp"
android:layout_marginBottom="4dp"
android:layout_marginStart="8dp"
android:layout_marginBottom="2dp"
android:backgroundTint="@color/surfaceToolbar"
android:rotation="180"
android:src="@drawable/ic_arrow"
android:tint="@color/themeLight"
app:layout_constraintBottom_toTopOf="@+id/map_data_root"
app:layout_constraintBottom_toTopOf="@+id/map_card_info"
app:layout_constraintStart_toStartOf="parent"
tools:ignore="DuplicateSpeakableTextCheck" />
@@ -161,12 +179,29 @@
android:id="@+id/map_btn_next"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginEnd="4dp"
android:layout_marginBottom="4dp"
android:layout_marginEnd="8dp"
android:backgroundTint="@color/surfaceToolbar"
android:src="@drawable/ic_arrow"
android:tint="@color/themeLight"
app:layout_constraintBottom_toTopOf="@+id/map_data_root"
app:layout_constraintEnd_toEndOf="parent" />
app:layout_constraintBottom_toBottomOf="@+id/map_btn_prev"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/map_btn_prev" />
<TextView
android:id="@+id/map_copyright"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="4dp"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:text="@string/map_copyright"
android:textColor="@color/themeLight"
android:textSize="13sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
+32 -27
View File
@@ -7,7 +7,10 @@
<androidx.cardview.widget.CardView
android:id="@+id/passes_toolbar"
style="@style/Toolbar"
style="@style/ToolbarCard"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -15,7 +18,6 @@
<ImageButton
android:id="@+id/passes_filter"
style="@style/ToolbarButton"
android:layout_marginStart="4dp"
android:src="@drawable/ic_filter"
app:layout_constraintBottom_toBottomOf="@+id/passes_toolbar"
app:layout_constraintStart_toStartOf="@+id/passes_toolbar"
@@ -25,45 +27,47 @@
android:id="@+id/passes_timer"
style="@style/ToolbarTimer"
app:layout_constraintBottom_toBottomOf="@+id/passes_toolbar"
app:layout_constraintEnd_toEndOf="@+id/passes_toolbar"
app:layout_constraintStart_toStartOf="@id/passes_toolbar"
app:layout_constraintEnd_toStartOf="@+id/passes_settings"
app:layout_constraintStart_toEndOf="@+id/passes_filter"
app:layout_constraintTop_toTopOf="@+id/passes_toolbar" />
<ImageButton
android:id="@+id/passes_settings"
style="@style/ToolbarButton"
android:layout_marginEnd="4dp"
android:src="@drawable/ic_prefs"
app:layout_constraintBottom_toBottomOf="@+id/passes_toolbar"
app:layout_constraintEnd_toEndOf="@+id/passes_toolbar"
app:layout_constraintTop_toTopOf="@+id/passes_toolbar" />
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/passes_swipe"
<androidx.cardview.widget.CardView
android:id="@+id/passes_list_card"
style="@style/ToolbarCard"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:backgroundTint="@color/surfaceBg"
android:clipChildren="true"
app:cardElevation="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/passes_toolbar">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/passes_recycler"
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/passes_swipe"
android:layout_width="match_parent"
android:layout_height="match_parent" />
android:layout_height="match_parent">
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/passes_list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ProgressBar
android:id="@+id/passes_progress"
style="@android:style/Widget.DeviceDefault.Light.ProgressBar.Large"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@+id/passes_swipe"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/passes_toolbar" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</androidx.cardview.widget.CardView>
<TextView
android:id="@+id/passes_error"
@@ -72,18 +76,19 @@
android:text="@string/passes_error"
android:textSize="20sp"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/passes_toolbar" />
app:layout_constraintBottom_toBottomOf="@+id/passes_list_card"
app:layout_constraintEnd_toEndOf="@+id/passes_list_card"
app:layout_constraintStart_toStartOf="@+id/passes_list_card"
app:layout_constraintTop_toTopOf="@+id/passes_list_card" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/passes_fab"
style="@style/Widget.MaterialComponents.FloatingActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp"
android:layout_marginEnd="24dp"
android:layout_marginBottom="24dp"
android:elevation="16dp"
android:src="@drawable/ic_satellite"
android:tint="@color/surfaceBg"
app:layout_constraintBottom_toBottomOf="parent"
+23 -6
View File
@@ -8,7 +8,10 @@
<androidx.cardview.widget.CardView
android:id="@+id/radar_toolbar"
style="@style/Toolbar"
style="@style/ToolbarCard"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -16,7 +19,6 @@
<ImageButton
android:id="@+id/radar_back"
style="@style/ToolbarButton"
android:layout_marginStart="4dp"
android:src="@drawable/ic_back"
app:layout_constraintBottom_toBottomOf="@+id/radar_toolbar"
app:layout_constraintStart_toStartOf="@+id/radar_toolbar"
@@ -33,21 +35,36 @@
<ImageButton
android:id="@+id/radar_map"
style="@style/ToolbarButton"
android:layout_marginEnd="4dp"
android:src="@drawable/ic_map"
app:layout_constraintBottom_toBottomOf="@+id/radar_toolbar"
app:layout_constraintEnd_toEndOf="@+id/radar_toolbar"
app:layout_constraintTop_toTopOf="@+id/radar_toolbar" />
<FrameLayout
android:id="@+id/radar_frame"
android:layout_width="match_parent"
<androidx.cardview.widget.CardView
android:id="@+id/radar_card"
style="@style/SettingsCard"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:elevation="0dp"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/radar_toolbar" />
<FrameLayout
android:id="@+id/radar_frame"
android:layout_width="0dp"
android:layout_height="0dp"
android:elevation="16dp"
app:layout_constraintBottom_toBottomOf="@+id/radar_card"
app:layout_constraintDimensionRatio=""
app:layout_constraintEnd_toEndOf="@+id/radar_card"
app:layout_constraintStart_toStartOf="@+id/radar_card"
app:layout_constraintTop_toTopOf="@+id/radar_card" />
<TextView
android:id="@+id/radar_az"
android:layout_width="wrap_content"
+16 -6
View File
@@ -6,7 +6,10 @@
<androidx.cardview.widget.CardView
android:id="@+id/prefs_toolbar"
style="@style/Toolbar"
style="@style/ToolbarCard"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -14,25 +17,27 @@
<ImageButton
android:id="@+id/prefs_back"
style="@style/ToolbarButton"
android:layout_marginStart="4dp"
android:src="@drawable/ic_back"
app:layout_constraintBottom_toBottomOf="@+id/prefs_toolbar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintStart_toStartOf="@+id/prefs_toolbar"
app:layout_constraintTop_toTopOf="@+id/prefs_toolbar" />
<TextView
android:id="@+id/prefs_title"
style="@style/ToolbarText"
android:layout_marginStart="20dp"
android:text="@string/settings_title"
app:layout_constraintBottom_toBottomOf="@+id/prefs_toolbar"
app:layout_constraintEnd_toEndOf="@+id/prefs_toolbar"
app:layout_constraintHorizontal_bias="0.25"
app:layout_constraintStart_toStartOf="@+id/prefs_toolbar"
app:layout_constraintStart_toEndOf="@+id/prefs_back"
app:layout_constraintTop_toTopOf="@+id/prefs_toolbar" />
<ScrollView
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:clipChildren="true"
android:scrollbars="none"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
@@ -59,6 +64,7 @@
<androidx.cardview.widget.CardView
android:id="@+id/card_prefs_location"
style="@style/SettingsCard"
android:layout_marginTop="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/card_prefs_info">
@@ -72,6 +78,7 @@
<androidx.cardview.widget.CardView
android:id="@+id/card_prefs_data"
style="@style/SettingsCard"
android:layout_marginTop="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/card_prefs_location">
@@ -85,6 +92,7 @@
<androidx.cardview.widget.CardView
android:id="@+id/card_prefs_tracking"
style="@style/SettingsCard"
android:layout_marginTop="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/card_prefs_data">
@@ -98,6 +106,7 @@
<androidx.cardview.widget.CardView
android:id="@+id/card_prefs_other"
style="@style/SettingsCard"
android:layout_marginTop="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/card_prefs_tracking">
@@ -111,6 +120,7 @@
<androidx.cardview.widget.CardView
android:id="@+id/card_prefs_warranty"
style="@style/SettingsCard"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
+24 -9
View File
@@ -1,11 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/entry_checkbox"
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/entry_root"
android:layout_width="match_parent"
android:layout_height="31dp"
android:background="@color/surfaceCard"
android:ellipsize="end"
android:layout_margin="6dp"
android:lines="1"
android:textColor="@color/themeLight"
android:textSize="16sp" />
android:layout_height="wrap_content"
android:layout_marginStart="1dp"
android:layout_marginEnd="1dp"
android:layout_marginBottom="1dp"
app:cardBackgroundColor="@color/surfaceCard"
app:cardCornerRadius="@dimen/card_corner"
app:cardElevation="0dp">
<CheckBox
android:id="@+id/entry_checkbox"
android:layout_width="match_parent"
android:layout_height="33dp"
android:layout_margin="4dp"
android:background="@color/surfaceCard"
android:ellipsize="end"
android:lines="1"
android:padding="1dp"
android:textColor="@color/themeLight"
android:textSize="16sp" />
</androidx.cardview.widget.CardView>
@@ -1,109 +1,111 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/pass_leo_card"
android:id="@+id/pass_card"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="1dp"
android:backgroundTint="@color/surfaceCard"
app:cardCornerRadius="0dp">
app:cardCornerRadius="@dimen/card_corner"
app:cardElevation="0dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/pass_leo_root"
android:id="@+id/pass_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?android:selectableItemBackground">
<TextView
android:id="@+id/pass_leo_name"
android:id="@+id/pass_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_marginTop="6dp"
android:layout_marginTop="4dp"
android:text="@string/pass_satName"
android:textColor="@color/themeAccent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/pass_leo_id"
android:id="@+id/pass_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="6dp"
android:text="@string/pass_satId"
android:textColor="@color/themeAccent"
app:layout_constraintBaseline_toBaselineOf="@+id/pass_leo_name"
app:layout_constraintBaseline_toBaselineOf="@+id/pass_name"
app:layout_constraintEnd_toEndOf="parent" />
<TextView
android:id="@+id/pass_leo_aos"
android:id="@+id/pass_aos"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:text="@string/pass_aosAz"
app:layout_constraintEnd_toStartOf="@+id/pass_leo_los"
app:layout_constraintEnd_toStartOf="@+id/pass_los"
app:layout_constraintHorizontal_chainStyle="spread_inside"
app:layout_constraintStart_toStartOf="@+id/pass_leo_name"
app:layout_constraintTop_toBottomOf="@+id/pass_leo_name" />
app:layout_constraintStart_toStartOf="@+id/pass_name"
app:layout_constraintTop_toBottomOf="@+id/pass_name" />
<TextView
android:id="@+id/pass_leo_elev"
android:id="@+id/pass_altitude"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pass_maxEl"
app:layout_constraintBaseline_toBaselineOf="@+id/pass_leo_start"
app:layout_constraintEnd_toEndOf="@+id/pass_leo_end"
app:layout_constraintStart_toStartOf="@+id/pass_leo_start" />
android:text="@string/pass_altitude"
app:layout_constraintBaseline_toBaselineOf="@+id/pass_aos"
app:layout_constraintEnd_toEndOf="@+id/pass_los"
app:layout_constraintStart_toStartOf="@+id/pass_aos" />
<TextView
android:id="@+id/pass_leo_los"
android:id="@+id/pass_los"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pass_losAz"
app:layout_constraintBaseline_toBaselineOf="@+id/pass_leo_aos"
app:layout_constraintEnd_toEndOf="@+id/pass_leo_id"
app:layout_constraintStart_toEndOf="@+id/pass_leo_aos" />
android:text="@string/pass_los"
app:layout_constraintBaseline_toBaselineOf="@+id/pass_aos"
app:layout_constraintEnd_toEndOf="@+id/pass_id"
app:layout_constraintStart_toEndOf="@+id/pass_aos" />
<TextView
android:id="@+id/pass_leo_start"
android:id="@+id/pass_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:text="@string/pass_startTime"
app:layout_constraintEnd_toStartOf="@+id/pass_leo_end"
app:layout_constraintEnd_toStartOf="@+id/pass_end"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintHorizontal_chainStyle="spread_inside"
app:layout_constraintStart_toStartOf="@+id/pass_leo_aos"
app:layout_constraintTop_toBottomOf="@+id/pass_leo_aos" />
app:layout_constraintStart_toStartOf="@+id/pass_aos"
app:layout_constraintTop_toBottomOf="@+id/pass_aos" />
<TextView
android:id="@+id/pass_leo_tca"
android:id="@+id/pass_elev"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pass_tcaAz"
app:layout_constraintBaseline_toBaselineOf="@+id/pass_leo_aos"
app:layout_constraintEnd_toEndOf="@+id/pass_leo_los"
app:layout_constraintStart_toStartOf="@+id/pass_leo_aos" />
android:text="@string/pass_elevation"
app:layout_constraintBaseline_toBaselineOf="@+id/pass_start"
app:layout_constraintEnd_toEndOf="@+id/pass_end"
app:layout_constraintStart_toStartOf="@+id/pass_start" />
<TextView
android:id="@+id/pass_leo_end"
android:id="@+id/pass_end"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pass_endTime"
app:layout_constraintBaseline_toBaselineOf="@+id/pass_leo_start"
app:layout_constraintEnd_toEndOf="@+id/pass_leo_los"
app:layout_constraintBaseline_toBaselineOf="@+id/pass_start"
app:layout_constraintEnd_toEndOf="@+id/pass_los"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/pass_leo_start" />
app:layout_constraintStart_toEndOf="@+id/pass_start" />
<ProgressBar
android:id="@+id/pass_leo_progress"
android:id="@+id/pass_progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="2dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/pass_leo_end"
app:layout_constraintStart_toStartOf="@+id/pass_leo_start"
app:layout_constraintTop_toBottomOf="@+id/pass_leo_elev" />
app:layout_constraintEnd_toEndOf="@+id/pass_end"
app:layout_constraintStart_toStartOf="@+id/pass_start"
app:layout_constraintTop_toBottomOf="@+id/pass_elev" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
-74
View File
@@ -1,74 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/pass_geo_card"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="@color/surfaceCard"
app:cardCornerRadius="0dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/pass_geo_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?android:selectableItemBackground">
<TextView
android:id="@+id/pass_geo_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_marginTop="4dp"
android:text="@string/pass_satName"
android:textColor="@color/themeAccent"
app:layout_constraintEnd_toStartOf="@+id/pass_geo_id"
app:layout_constraintHorizontal_chainStyle="spread_inside"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/pass_geo_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="6dp"
android:text="@string/pass_satId"
android:textColor="@color/themeAccent"
app:layout_constraintBaseline_toBaselineOf="@+id/pass_geo_name"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/pass_geo_name" />
<TextView
android:id="@+id/pass_geo_az"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:layout_marginBottom="4dp"
android:text="@string/pat_azimuth"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/pass_geo_el"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintHorizontal_chainStyle="spread_inside"
app:layout_constraintStart_toStartOf="@+id/pass_geo_name"
app:layout_constraintTop_toBottomOf="@+id/pass_geo_name" />
<TextView
android:id="@+id/pass_geo_alt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pat_altitude"
app:layout_constraintBaseline_toBaselineOf="@+id/pass_geo_az"
app:layout_constraintEnd_toEndOf="@+id/pass_geo_el"
app:layout_constraintStart_toStartOf="@+id/pass_geo_az" />
<TextView
android:id="@+id/pass_geo_el"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pat_elevation"
app:layout_constraintBaseline_toBaselineOf="@+id/pass_geo_az"
app:layout_constraintEnd_toEndOf="@+id/pass_geo_id"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/pass_geo_az" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
+3 -2
View File
@@ -28,8 +28,9 @@
<string name="pass_aosAz">НПС - %.1f°</string>
<string name="pass_tcaAz">Азимут: %.1f°</string>
<string name="pass_maxEl">МаксЭлев: %.1f°</string>
<string name="pass_losAz">%.1f° - КПС</string>
<string name="pass_elevation">МаксЭлев: %.1f°</string>
<string name="pass_los">%.1f° - КПС</string>
<string name="pass_altitude">Высота: %.0fкм</string>
<string name="trans_mode">Модуляция: %s</string>
<string name="trans_no_mode">Модуляция: нет</string>
+2 -1
View File
@@ -11,9 +11,10 @@
<color name="surfaceButton">#242424</color>
<color name="surfaceToolbar">#202020</color>
<color name="surfaceSystem">#1A1A1A</color>
<color name="surfaceCard">#1A1A1A</color>
<color name="surfaceCard">#181818</color>
<color name="surfaceBg">#121212</color>
<color name="mapInfoLayout">#B3181818</color>
<color name="transparent">@android:color/transparent</color>
<color name="mtrl_textinput_disabled_color">@color/surfaceButton</color>
<color name="mtrl_textinput_default_box_stroke_color">@color/themeLight</color>
</resources>
+4 -4
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<dimen name="fab_padding">48dp</dimen>
<dimen name="design_bottom_navigation_text_size" tools:override="true">12sp</dimen>
<dimen name="design_bottom_navigation_active_text_size" tools:override="true">12sp</dimen>
<resources>
<dimen name="card_elevation">0dp</dimen>
<dimen name="card_corner">8dp</dimen>
<dimen name="card_corner_zero">0dp</dimen>
</resources>
+4 -2
View File
@@ -35,8 +35,10 @@
<string name="pass_satId" translatable="false">Id:%d</string>
<string name="pass_aosAz">AOS - %.1f°</string>
<string name="pass_tcaAz">Azimuth: %.1f°</string>
<string name="pass_maxEl">MaxElev: %.1f°</string>
<string name="pass_losAz">%.1f° - LOS</string>
<string name="pass_elevation">MaxElev: %.1f°</string>
<string name="pass_los">%.1f° - LOS</string>
<string name="pass_altitude">Altitude: %.0f km</string>
<string name="pass_placeholder" translatable="false"> - - : - - </string>
<string name="pass_startTime" translatable="false">HH:mm:ss - EEE</string>
<string name="pass_endTime" translatable="false">EEE - HH:mm:ss</string>
+8 -10
View File
@@ -13,9 +13,9 @@
<item name="colorAccent">@color/themeAccent</item>
<item name="colorControlNormal">@color/themeLight</item>
<item name="android:textColorPrimary">@color/themeLight</item>
<item name="android:statusBarColor">@color/surfaceSystem</item>
<item name="android:statusBarColor">@color/surfaceBg</item>
<item name="android:windowBackground">@color/surfaceBg</item>
<item name="android:navigationBarColor">@color/surfaceSystem</item>
<item name="android:navigationBarColor">@color/surfaceBg</item>
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
</style>
@@ -52,12 +52,13 @@
<item name="android:textSize">16sp</item>
</style>
<style name="Toolbar">
<style name="ToolbarCard">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">48dp</item>
<item name="android:elevation">8dp</item>
<item name="android:elevation">0dp</item>
<item name="cardElevation">0dp</item>
<item name="cardBackgroundColor">@color/surfaceToolbar</item>
<item name="cardCornerRadius">0dp</item>
<item name="cardCornerRadius">@dimen/card_corner</item>
</style>
<style name="ToolbarButton">
@@ -84,7 +85,7 @@
<item name="android:includeFontPadding">false</item>
<item name="android:text">@string/timer_zero</item>
<item name="android:textColor">@color/themeAccent</item>
<item name="android:textSize">40sp</item>
<item name="android:textSize">38sp</item>
<item name="android:textStyle">bold</item>
</style>
@@ -96,11 +97,8 @@
<style name="SettingsCard">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginStart">8dp</item>
<item name="android:layout_marginTop">8dp</item>
<item name="android:layout_marginEnd">8dp</item>
<item name="cardBackgroundColor">@color/surfaceCard</item>
<item name="cardCornerRadius">8dp</item>
<item name="cardCornerRadius">@dimen/card_corner</item>
</style>
<style name="SettingsText">