diff --git a/app/src/main/java/com/rtbishop/lookingsat/ui/MainActivity.kt b/app/src/main/java/com/rtbishop/lookingsat/ui/MainActivity.kt index b851f6dd..c0474952 100644 --- a/app/src/main/java/com/rtbishop/lookingsat/ui/MainActivity.kt +++ b/app/src/main/java/com/rtbishop/lookingsat/ui/MainActivity.kt @@ -6,7 +6,6 @@ import android.content.pm.ActivityInfo import android.content.pm.PackageManager import android.net.Uri import android.os.Bundle -import android.os.CountDownTimer import android.view.View import android.widget.ImageButton import android.widget.TextView @@ -20,14 +19,13 @@ import androidx.drawerlayout.widget.DrawerLayout import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import androidx.navigation.findNavController +import androidx.navigation.ui.AppBarConfiguration import androidx.navigation.ui.navigateUp import androidx.navigation.ui.setupActionBarWithNavController import androidx.navigation.ui.setupWithNavController import com.google.android.material.navigation.NavigationView import com.rtbishop.lookingsat.MainViewModel import com.rtbishop.lookingsat.R -import java.util.* -import java.util.concurrent.TimeUnit class MainActivity : AppCompatActivity() { @@ -36,42 +34,38 @@ class MainActivity : AppCompatActivity() { private val permGranted = PackageManager.PERMISSION_GRANTED private val githubUrl = "https://github.com/rt-bishop/LookingSat" - private lateinit var drawerLayout: DrawerLayout private lateinit var viewModel: MainViewModel private lateinit var timerLayout: ConstraintLayout - private lateinit var timeToAos: TextView + private lateinit var drawerLayout: DrawerLayout private lateinit var drawerLat: TextView private lateinit var drawerLon: TextView - private lateinit var drawerHeight: TextView private lateinit var drawerBtnLoc: ImageButton private lateinit var drawerBtnTle: ImageButton private lateinit var drawerBtnTrans: ImageButton private lateinit var drawerBtnGithub: ImageButton private lateinit var drawerBtnExit: ImageButton + private lateinit var appBarConfig: AppBarConfiguration override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) setupComponents() setupDrawer() - setupTimer() } private fun setupComponents() { - viewModel = ViewModelProvider(this).get(MainViewModel::class.java) - timerLayout = findViewById(R.id.toolbar_layout_timer) - timeToAos = findViewById(R.id.toolbar_time_to_aos) - + val navView: NavigationView = findViewById(R.id.nav_view) + val header = navView.getHeaderView(0) val toolbar: Toolbar = findViewById(R.id.toolbar) setSupportActionBar(toolbar) + viewModel = ViewModelProvider(this).get(MainViewModel::class.java) + + timerLayout = findViewById(R.id.toolbar_layout_timer) drawerLayout = findViewById(R.id.drawer_layout) - val navView: NavigationView = findViewById(R.id.nav_view) - val header = navView.getHeaderView(0) drawerLat = header.findViewById(R.id.drawer_lat_value) drawerLon = header.findViewById(R.id.drawer_lon_value) - drawerHeight = header.findViewById(R.id.drawer_height_value) drawerBtnLoc = header.findViewById(R.id.drawer_btn_loc) drawerBtnTle = header.findViewById(R.id.drawer_btn_tle) @@ -79,8 +73,13 @@ class MainActivity : AppCompatActivity() { drawerBtnGithub = header.findViewById(R.id.drawer_btn_github) drawerBtnExit = header.findViewById(R.id.drawer_btn_exit) + appBarConfig = AppBarConfiguration( + setOf(R.id.nav_sky, R.id.nav_map, R.id.nav_credits, R.id.nav_about), + drawerLayout + ) + val navController = findNavController(R.id.nav_host) - setupActionBarWithNavController(navController, drawerLayout) + setupActionBarWithNavController(navController, appBarConfig) navView.setupWithNavController(navController) navController.addOnDestinationChangedListener { _, destination, _ -> @@ -95,6 +94,8 @@ class MainActivity : AppCompatActivity() { toolbar.visibility = View.GONE } else -> { + this.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT + toolbar.visibility = View.VISIBLE timerLayout.visibility = View.GONE } } @@ -111,7 +112,6 @@ class MainActivity : AppCompatActivity() { viewModel.gsp.observe(this, Observer { gsp -> drawerLat.text = String.format("%.4f", gsp.latitude) drawerLon.text = String.format("%.4f", gsp.longitude) - drawerHeight.text = String.format("%.1fm", gsp.heightAMSL) }) drawerBtnLoc.setOnClickListener { updateLocation() } @@ -123,32 +123,6 @@ class MainActivity : AppCompatActivity() { drawerBtnExit.setOnClickListener { finish() } } - private fun setupTimer() { - val cal = Calendar.getInstance() - cal.add(Calendar.DAY_OF_MONTH, 1) - cal.set(Calendar.HOUR_OF_DAY, 0) - cal.set(Calendar.MINUTE, 0) - cal.set(Calendar.SECOND, 0) - cal.set(Calendar.MILLISECOND, 0) - val totalMillis = cal.timeInMillis - System.currentTimeMillis() - - val timer = object : CountDownTimer(totalMillis, 1000) { - override fun onFinish() { - Toast.makeText(this@MainActivity, "Time is up!", Toast.LENGTH_SHORT).show() - } - - override fun onTick(millisUntilFinished: Long) { - timeToAos.text = String.format( - resources.getString(R.string.toolbar_aos_in), - TimeUnit.MILLISECONDS.toHours(millisUntilFinished) % 60, - TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) % 60, - TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) % 60 - ) - } - } - timer.start() - } - private fun updateLocation() { if (ContextCompat.checkSelfPermission(this, permLocation) != permGranted) { if (ActivityCompat.shouldShowRequestPermissionRationale(this, permLocation)) { @@ -173,6 +147,6 @@ class MainActivity : AppCompatActivity() { override fun onSupportNavigateUp(): Boolean { val navController = findNavController(R.id.nav_host) - return navController.navigateUp(drawerLayout) || super.onSupportNavigateUp() + return navController.navigateUp(appBarConfig) || super.onSupportNavigateUp() } } \ No newline at end of file diff --git a/app/src/main/java/com/rtbishop/lookingsat/ui/SkyFragment.kt b/app/src/main/java/com/rtbishop/lookingsat/ui/SkyFragment.kt index 317fe466..fb193e54 100644 --- a/app/src/main/java/com/rtbishop/lookingsat/ui/SkyFragment.kt +++ b/app/src/main/java/com/rtbishop/lookingsat/ui/SkyFragment.kt @@ -1,11 +1,14 @@ package com.rtbishop.lookingsat.ui import android.os.Bundle +import android.os.CountDownTimer import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ImageButton import android.widget.ProgressBar +import android.widget.TextView +import android.widget.Toast import androidx.appcompat.app.AlertDialog import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider @@ -19,6 +22,8 @@ import com.rtbishop.lookingsat.R import com.rtbishop.lookingsat.repo.SatPass import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +import java.util.* +import java.util.concurrent.TimeUnit class SkyFragment : Fragment() { @@ -27,6 +32,7 @@ class SkyFragment : Fragment() { private lateinit var recViewFuture: RecyclerView private lateinit var recAdapterCurrent: RecyclerView.Adapter<*> private lateinit var recAdapterFuture: RecyclerView.Adapter<*> + private lateinit var timeToAos: TextView private lateinit var btnPassPrefs: ImageButton private lateinit var progressBar: ProgressBar private lateinit var fab: FloatingActionButton @@ -42,6 +48,7 @@ class SkyFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) viewModel = ViewModelProvider(activity as MainActivity).get(MainViewModel::class.java) + timeToAos = (activity as MainActivity).findViewById(R.id.toolbar_time_to_aos) btnPassPrefs = (activity as MainActivity).findViewById(R.id.toolbar_btn_refresh) progressBar = view.findViewById(R.id.sky_progressbar) recViewFuture = view.findViewById(R.id.sky_recycler_future) @@ -50,6 +57,8 @@ class SkyFragment : Fragment() { recViewFuture.layoutManager = LinearLayoutManager(activity) fab.setOnClickListener { showSelectSatDialog() } + + setupTimer() } private fun showSelectSatDialog() { @@ -107,4 +116,30 @@ class SkyFragment : Fragment() { recViewFuture.visibility = View.VISIBLE } } + + private fun setupTimer() { + val cal = Calendar.getInstance() + cal.add(Calendar.DAY_OF_MONTH, 1) + cal.set(Calendar.HOUR_OF_DAY, 0) + cal.set(Calendar.MINUTE, 0) + cal.set(Calendar.SECOND, 0) + cal.set(Calendar.MILLISECOND, 0) + val totalMillis = cal.timeInMillis - System.currentTimeMillis() + + val timer = object : CountDownTimer(totalMillis, 1000) { + override fun onFinish() { + Toast.makeText(activity, "Time is up!", Toast.LENGTH_SHORT).show() + } + + override fun onTick(millisUntilFinished: Long) { + timeToAos.text = String.format( + "AOS -%02d:%02d:%02d", + TimeUnit.MILLISECONDS.toHours(millisUntilFinished) % 60, + TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) % 60, + TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) % 60 + ) + } + } + timer.start() + } } \ No newline at end of file diff --git a/app/src/main/res/layout/drawer_header.xml b/app/src/main/res/layout/drawer_header.xml index 7a361ab2..bcbb9057 100644 --- a/app/src/main/res/layout/drawer_header.xml +++ b/app/src/main/res/layout/drawer_header.xml @@ -2,7 +2,7 @@ @@ -12,129 +12,148 @@ android:layout_width="108dp" android:layout_height="108dp" android:layout_marginTop="24dp" - android:layout_marginEnd="8dp" android:contentDescription="@string/app_name" app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/drawer_title" app:layout_constraintTop_toTopOf="parent" app:srcCompat="@drawable/ic_sat_desc_left" /> + app:layout_constraintBaseline_toBaselineOf="@+id/drawer_lat_value" + app:layout_constraintStart_toStartOf="@+id/drawer_subtitle" /> + app:layout_constraintStart_toEndOf="@+id/drawer_lat" + app:layout_constraintTop_toBottomOf="@+id/drawer_sat_img" /> + app:layout_constraintStart_toStartOf="@+id/drawer_lat" + app:layout_constraintTop_toBottomOf="@+id/drawer_lat" /> - - - - + app:layout_constraintBottom_toTopOf="@+id/drawer_btn_tle" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/drawer_lon_value" /> + + + app:layout_constraintBottom_toTopOf="@+id/drawer_btn_trans" + app:layout_constraintStart_toStartOf="@+id/drawer_btn_loc" + app:layout_constraintTop_toBottomOf="@+id/drawer_btn_loc" /> + + + app:layout_constraintBottom_toTopOf="@+id/drawer_btn_github" + app:layout_constraintStart_toStartOf="@+id/drawer_btn_tle" + app:layout_constraintTop_toBottomOf="@+id/drawer_btn_tle" /> + + + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="@+id/drawer_btn_trans" + app:layout_constraintTop_toBottomOf="@+id/drawer_btn_trans" /> + + + + diff --git a/app/src/main/res/menu/drawer_menu.xml b/app/src/main/res/menu/drawer_menu.xml index 46636132..f5cb3149 100644 --- a/app/src/main/res/menu/drawer_menu.xml +++ b/app/src/main/res/menu/drawer_menu.xml @@ -12,18 +12,13 @@ android:id="@+id/nav_map" android:icon="@drawable/ic_map" android:title="@string/menu_map" /> + + - - - - - - - diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 8fcc18c4..59a0b0c4 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -1,4 +1,3 @@ - 292dp 16dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a6173df4..782a5bd4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -8,8 +8,12 @@ 51.5074 Longitude: 0.1278 - Height AMSL: - 48.0m + + Update location + Update TLE file + Update transmitters DB + GitHub + Exit Sky at a Glance Radar View @@ -17,9 +21,6 @@ Credits About the App - AOS in %02d:%02d:%02d - Refresh - Meteor M2–2 V: 180° -> 360° 75.5° @@ -30,5 +31,4 @@ Nasa Map Placeholder - About diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index a436cdae..97144b03 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -29,14 +29,14 @@ bold - - + +