From d4ac615a8d3df45777620d0ae202a4076e4767c6 Mon Sep 17 00:00:00 2001 From: Arty Bishop Date: Tue, 22 Sep 2020 22:01:17 +0100 Subject: [PATCH] Added NavActivity as a future replacement for the MainActivity --- app/src/main/AndroidManifest.xml | 21 ++++++---- .../com/rtbishop/look4sat/ui/MainActivity.kt | 5 +-- .../com/rtbishop/look4sat/ui/NavActivity.kt | 19 +++++++++ .../look4sat/ui/fragments/MapOsmFragment.kt | 6 +-- .../look4sat/ui/fragments/MapViewFragment.kt | 6 +-- .../look4sat/ui/fragments/PassListFragment.kt | 6 +-- .../ui/fragments/PolarViewFragment.kt | 7 ++-- .../ui/fragments/PreferencesFragment.kt | 6 +-- app/src/main/res/color/nav_item_selector.xml | 5 +++ app/src/main/res/drawable/ic_help_outline.xml | 10 +++++ app/src/main/res/drawable/ic_list.xml | 10 +++++ app/src/main/res/layout/activity_nav.xml | 38 ++++++++++++++++++ app/src/main/res/menu/nav_menu.xml | 40 +++++++++++++++++++ app/src/main/res/navigation/temp_graph.xml | 25 ++++++++++++ app/src/main/res/values-ru/strings.xml | 5 +++ app/src/main/res/values/strings.xml | 5 +++ 16 files changed, 188 insertions(+), 26 deletions(-) create mode 100644 app/src/main/java/com/rtbishop/look4sat/ui/NavActivity.kt create mode 100644 app/src/main/res/color/nav_item_selector.xml create mode 100644 app/src/main/res/drawable/ic_help_outline.xml create mode 100644 app/src/main/res/drawable/ic_list.xml create mode 100644 app/src/main/res/layout/activity_nav.xml create mode 100644 app/src/main/res/menu/nav_menu.xml create mode 100644 app/src/main/res/navigation/temp_graph.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 41288a85..7b35f156 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,7 +18,6 @@ --> @@ -28,23 +27,31 @@ + android:theme="@style/AppTheme"> + + + + + + + + - + \ No newline at end of file diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt b/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt index 170539bc..2cd1a7c2 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt @@ -31,7 +31,6 @@ import android.view.View import android.view.WindowManager import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat -import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.navigation.findNavController @@ -133,7 +132,7 @@ class MainActivity : AppCompatActivity(), TleSourcesDialogFragment.SourcesSubmit } private fun setupObservers() { - viewModel.getGSP().observe(this, Observer { result -> + viewModel.getGSP().observe(this, { result -> when (result) { is Result.Success -> { drawerBinding.drawerLatValue.text = @@ -151,7 +150,7 @@ class MainActivity : AppCompatActivity(), TleSourcesDialogFragment.SourcesSubmit } } }) - viewModel.getUpdateStatus().observe(this, Observer { result -> + viewModel.getUpdateStatus().observe(this, { result -> when (result) { is Result.Success -> getString(R.string.import_data_success).toast(this) is Result.Error -> getString(R.string.import_data_failure).toast(this) diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/NavActivity.kt b/app/src/main/java/com/rtbishop/look4sat/ui/NavActivity.kt new file mode 100644 index 00000000..11368458 --- /dev/null +++ b/app/src/main/java/com/rtbishop/look4sat/ui/NavActivity.kt @@ -0,0 +1,19 @@ +package com.rtbishop.look4sat.ui + +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import androidx.navigation.fragment.NavHostFragment +import androidx.navigation.ui.setupWithNavController +import com.rtbishop.look4sat.R +import com.rtbishop.look4sat.databinding.ActivityNavBinding + +class NavActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + val binding = ActivityNavBinding.inflate(layoutInflater) + setContentView(binding.root) + val navHost = supportFragmentManager.findFragmentById(R.id.nav_frag) as NavHostFragment + binding.navBottom.setupWithNavController(navHost.navController) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/MapOsmFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/MapOsmFragment.kt index 6975e116..fefb9906 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/MapOsmFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/MapOsmFragment.kt @@ -9,6 +9,7 @@ import android.view.View import androidx.core.content.ContextCompat import androidx.core.content.res.ResourcesCompat import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentActivity import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.preference.PreferenceManager @@ -20,7 +21,6 @@ import com.rtbishop.look4sat.data.Result import com.rtbishop.look4sat.data.SatItem import com.rtbishop.look4sat.data.SatPass import com.rtbishop.look4sat.databinding.FragmentMapOsmBinding -import com.rtbishop.look4sat.ui.MainActivity import com.rtbishop.look4sat.ui.SharedViewModel import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay @@ -43,7 +43,7 @@ class MapOsmFragment : Fragment(R.layout.fragment_map_osm) { @Inject lateinit var modelFactory: ViewModelFactory - private lateinit var mainActivity: MainActivity + private lateinit var mainActivity: FragmentActivity private lateinit var viewModel: SharedViewModel private lateinit var binding: FragmentMapOsmBinding private lateinit var trackPaint: Paint @@ -54,7 +54,7 @@ class MapOsmFragment : Fragment(R.layout.fragment_map_osm) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) binding = FragmentMapOsmBinding.bind(view) - mainActivity = requireActivity() as MainActivity + mainActivity = requireActivity() (mainActivity.application as Look4SatApp).appComponent.inject(this) viewModel = ViewModelProvider(mainActivity, modelFactory).get(SharedViewModel::class.java) diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/MapViewFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/MapViewFragment.kt index 4970c3a5..106dd362 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/MapViewFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/MapViewFragment.kt @@ -23,6 +23,7 @@ import android.os.Bundle import android.view.View import androidx.appcompat.app.AlertDialog import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentActivity import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.github.amsacode.predict4java.GroundStationPosition @@ -33,7 +34,6 @@ import com.rtbishop.look4sat.dagger.ViewModelFactory import com.rtbishop.look4sat.data.Result import com.rtbishop.look4sat.data.SatPass import com.rtbishop.look4sat.databinding.FragmentMapViewBinding -import com.rtbishop.look4sat.ui.MainActivity import com.rtbishop.look4sat.ui.SharedViewModel import com.rtbishop.look4sat.ui.views.MapView import com.rtbishop.look4sat.utility.Extensions.toast @@ -47,7 +47,7 @@ class MapViewFragment : Fragment(R.layout.fragment_map_view) { @Inject lateinit var modelFactory: ViewModelFactory - private lateinit var mainActivity: MainActivity + private lateinit var mainActivity: FragmentActivity private lateinit var viewModel: SharedViewModel private lateinit var mapView: MapView private lateinit var predictor: PassPredictor @@ -60,7 +60,7 @@ class MapViewFragment : Fragment(R.layout.fragment_map_view) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) binding = FragmentMapViewBinding.bind(view) - mainActivity = requireActivity() as MainActivity + mainActivity = requireActivity() (mainActivity.application as Look4SatApp).appComponent.inject(this) viewModel = ViewModelProvider(mainActivity, modelFactory).get(SharedViewModel::class.java) setupObservers(binding) diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PassListFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PassListFragment.kt index ca1c8952..b359e199 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PassListFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PassListFragment.kt @@ -30,6 +30,7 @@ import android.widget.TextView import android.widget.Toast import androidx.appcompat.app.AlertDialog import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentActivity import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager @@ -41,7 +42,6 @@ import com.rtbishop.look4sat.data.Result import com.rtbishop.look4sat.data.SatEntry import com.rtbishop.look4sat.data.SatPass import com.rtbishop.look4sat.databinding.FragmentPassListBinding -import com.rtbishop.look4sat.ui.MainActivity import com.rtbishop.look4sat.ui.SharedViewModel import com.rtbishop.look4sat.ui.adapters.SatPassAdapter import com.rtbishop.look4sat.utility.Extensions.toast @@ -64,7 +64,7 @@ class PassListFragment : Fragment(R.layout.fragment_pass_list) { private lateinit var btnPassPrefs: ImageButton private lateinit var aosTimer: CountDownTimer private lateinit var aosTimerText: TextView - private lateinit var mainActivity: MainActivity + private lateinit var mainActivity: FragmentActivity private var isTimerSet: Boolean = false private var satPassList: MutableList = mutableListOf() @@ -82,7 +82,7 @@ class PassListFragment : Fragment(R.layout.fragment_pass_list) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - mainActivity = activity as MainActivity + mainActivity = requireActivity() (mainActivity.application as Look4SatApp).appComponent.inject(this) viewModel = ViewModelProvider(mainActivity, modelFactory).get(SharedViewModel::class.java) satPassAdapter = SatPassAdapter(satPassList, prefsManager) diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PolarViewFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PolarViewFragment.kt index c2bd4199..c188e4aa 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PolarViewFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PolarViewFragment.kt @@ -24,6 +24,7 @@ import android.hardware.* import android.os.Bundle import android.view.View import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentActivity import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.navArgs @@ -34,7 +35,6 @@ import com.rtbishop.look4sat.dagger.ViewModelFactory import com.rtbishop.look4sat.data.Result import com.rtbishop.look4sat.data.SatPass import com.rtbishop.look4sat.databinding.FragmentPolarViewBinding -import com.rtbishop.look4sat.ui.MainActivity import com.rtbishop.look4sat.ui.SharedViewModel import com.rtbishop.look4sat.ui.adapters.TransmitterAdapter import com.rtbishop.look4sat.ui.views.PolarView @@ -48,7 +48,7 @@ class PolarViewFragment : Fragment(R.layout.fragment_polar_view), SensorEventLis @Inject lateinit var modelFactory: ViewModelFactory - private lateinit var mainActivity: MainActivity + private lateinit var mainActivity: FragmentActivity private lateinit var viewModel: SharedViewModel private lateinit var binding: FragmentPolarViewBinding private lateinit var satPass: SatPass @@ -60,7 +60,7 @@ class PolarViewFragment : Fragment(R.layout.fragment_polar_view), SensorEventLis override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - mainActivity = activity as MainActivity + mainActivity = requireActivity() binding = FragmentPolarViewBinding.bind(view) (mainActivity.application as Look4SatApp).appComponent.inject(this) viewModel = ViewModelProvider(mainActivity, modelFactory).get(SharedViewModel::class.java) @@ -110,7 +110,6 @@ class PolarViewFragment : Fragment(R.layout.fragment_polar_view), SensorEventLis if (result is Result.Success) { val refreshRate = viewModel.getRefreshRate() satPass = result.data[args.satPassIndex] - mainActivity.supportActionBar?.title = satPass.tle.name polarView = PolarView(mainActivity, satPass) binding.framePolar.addView(polarView) observeTransmitters() diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PreferencesFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PreferencesFragment.kt index 13c747d7..1a755a95 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PreferencesFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PreferencesFragment.kt @@ -22,18 +22,18 @@ package com.rtbishop.look4sat.ui.fragments import android.content.SharedPreferences import android.os.Bundle import android.text.InputType +import androidx.fragment.app.FragmentActivity import androidx.lifecycle.ViewModelProvider import androidx.preference.EditTextPreference import androidx.preference.PreferenceFragmentCompat import com.rtbishop.look4sat.R -import com.rtbishop.look4sat.ui.MainActivity import com.rtbishop.look4sat.ui.SharedViewModel import com.rtbishop.look4sat.utility.Extensions.toast class PreferencesFragment : PreferenceFragmentCompat(), SharedPreferences.OnSharedPreferenceChangeListener { - private lateinit var mainActivity: MainActivity + private lateinit var mainActivity: FragmentActivity private lateinit var viewModel: SharedViewModel private lateinit var keyLat: String private lateinit var keyLon: String @@ -44,7 +44,7 @@ class PreferencesFragment : PreferenceFragmentCompat(), setPreferencesFromResource(R.xml.preference, rootKey) val provider = EditTextPreference.SimpleSummaryProvider.getInstance() - mainActivity = activity as MainActivity + mainActivity = requireActivity() viewModel = ViewModelProvider(mainActivity).get(SharedViewModel::class.java) keyLat = mainActivity.getString(R.string.pref_lat_key) diff --git a/app/src/main/res/color/nav_item_selector.xml b/app/src/main/res/color/nav_item_selector.xml new file mode 100644 index 00000000..539f4f3b --- /dev/null +++ b/app/src/main/res/color/nav_item_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_help_outline.xml b/app/src/main/res/drawable/ic_help_outline.xml new file mode 100644 index 00000000..95af104a --- /dev/null +++ b/app/src/main/res/drawable/ic_help_outline.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_list.xml b/app/src/main/res/drawable/ic_list.xml new file mode 100644 index 00000000..9d1961ed --- /dev/null +++ b/app/src/main/res/drawable/ic_list.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/activity_nav.xml b/app/src/main/res/layout/activity_nav.xml new file mode 100644 index 00000000..0793a628 --- /dev/null +++ b/app/src/main/res/layout/activity_nav.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/nav_menu.xml b/app/src/main/res/menu/nav_menu.xml new file mode 100644 index 00000000..c19440bb --- /dev/null +++ b/app/src/main/res/menu/nav_menu.xml @@ -0,0 +1,40 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/navigation/temp_graph.xml b/app/src/main/res/navigation/temp_graph.xml new file mode 100644 index 00000000..3dd676a7 --- /dev/null +++ b/app/src/main/res/navigation/temp_graph.xml @@ -0,0 +1,25 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index ed0f677d..db5459c8 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -37,6 +37,11 @@ Карта мира (Демо) Настройки О приложении + Спутники + Пролеты + Карта Мира + Настройки + О приложении Выберите спутники для слежения Показать трассу орбиты для diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cc3c3598..df1685e1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -40,6 +40,11 @@ World Map Demo Settings About the App + Satellites + Passes + World Map + Settings + About Select satellites to track Show ground track for