kopia lustrzana https://github.com/rt-bishop/Look4Sat
Switched from Dagger to android Hilt DI
rodzic
4e0aa1481b
commit
1c7ce3f726
|
@ -17,10 +17,11 @@
|
|||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlin-android-extensions'
|
||||
apply plugin: 'kotlin-kapt'
|
||||
apply plugin: "com.android.application"
|
||||
apply plugin: "kotlin-android"
|
||||
apply plugin: "kotlin-kapt"
|
||||
apply plugin: "kotlin-android-extensions"
|
||||
apply plugin: "dagger.hilt.android.plugin"
|
||||
apply plugin: "androidx.navigation.safeargs.kotlin"
|
||||
|
||||
android {
|
||||
|
@ -77,8 +78,10 @@ dependencies {
|
|||
implementation "androidx.room:room-ktx:$room_version"
|
||||
kapt "androidx.room:room-compiler:$room_version"
|
||||
|
||||
implementation "com.google.dagger:dagger:$dagger_version"
|
||||
kapt "com.google.dagger:dagger-compiler:$dagger_version"
|
||||
implementation "androidx.hilt:hilt-lifecycle-viewmodel:$hilt_viewmodel_version"
|
||||
implementation "com.google.dagger:hilt-android:$hilt_version"
|
||||
kapt "com.google.dagger:hilt-android-compiler:$hilt_version"
|
||||
kapt "androidx.hilt:hilt-compiler:$hilt_viewmodel_version"
|
||||
|
||||
implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
|
||||
implementation "com.squareup.retrofit2:converter-moshi:$retrofit_version"
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
android:label="@string/app_name"
|
||||
android:theme="@style/AppTheme">
|
||||
<activity
|
||||
android:name=".ui.MainActivity"
|
||||
android:name=".ui.activities.MainActivity"
|
||||
android:screenOrientation="portrait">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
|
|
@ -20,12 +20,7 @@
|
|||
package com.rtbishop.look4sat
|
||||
|
||||
import android.app.Application
|
||||
import com.rtbishop.look4sat.dagger.AppComponent
|
||||
import com.rtbishop.look4sat.dagger.DaggerAppComponent
|
||||
import dagger.hilt.android.HiltAndroidApp
|
||||
|
||||
class Look4SatApp : Application() {
|
||||
|
||||
val appComponent: AppComponent by lazy {
|
||||
DaggerAppComponent.factory().create(applicationContext)
|
||||
}
|
||||
}
|
||||
@HiltAndroidApp
|
||||
class Look4SatApp : Application()
|
|
@ -17,13 +17,12 @@
|
|||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
package com.rtbishop.look4sat.ui
|
||||
package com.rtbishop.look4sat
|
||||
|
||||
import android.net.Uri
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import androidx.hilt.Assisted
|
||||
import androidx.hilt.lifecycle.ViewModelInject
|
||||
import androidx.lifecycle.*
|
||||
import com.github.amsacode.predict4java.GroundStationPosition
|
||||
import com.rtbishop.look4sat.data.Result
|
||||
import com.rtbishop.look4sat.data.SatEntry
|
||||
|
@ -35,13 +34,13 @@ import com.rtbishop.look4sat.utility.PrefsManager
|
|||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Singleton
|
||||
class SharedViewModel @Inject constructor(
|
||||
class SharedViewModel @ViewModelInject constructor(
|
||||
private val prefsManager: PrefsManager,
|
||||
private val repository: Repository
|
||||
private val repository: Repository,
|
||||
@Assisted private val savedStateHandle: SavedStateHandle
|
||||
) : ViewModel() {
|
||||
|
||||
private val _passes = MutableLiveData<Result<MutableList<SatPass>>>()
|
|
@ -1,50 +0,0 @@
|
|||
/*
|
||||
* Look4Sat. Amateur radio and weather satellite tracker and passes predictor for Android.
|
||||
* Copyright (C) 2019, 2020 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 2 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, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
package com.rtbishop.look4sat.dagger
|
||||
|
||||
import android.content.Context
|
||||
import com.rtbishop.look4sat.dagger.modules.*
|
||||
import com.rtbishop.look4sat.ui.MainActivity
|
||||
import com.rtbishop.look4sat.ui.fragments.EntriesFragment
|
||||
import com.rtbishop.look4sat.ui.fragments.MapFragment
|
||||
import com.rtbishop.look4sat.ui.fragments.PassesFragment
|
||||
import com.rtbishop.look4sat.ui.fragments.PolarFragment
|
||||
import dagger.BindsInstance
|
||||
import dagger.Component
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Singleton
|
||||
@Component(
|
||||
modules = [NetworkModule::class, PersistenceModule::class,
|
||||
RepoModule::class, UtilityModule::class, ViewModelModule::class]
|
||||
)
|
||||
interface AppComponent {
|
||||
|
||||
@Component.Factory
|
||||
interface Factory {
|
||||
fun create(@BindsInstance context: Context): AppComponent
|
||||
}
|
||||
|
||||
fun inject(mainActivity: MainActivity)
|
||||
fun inject(entriesFragment: EntriesFragment)
|
||||
fun inject(passesFragment: PassesFragment)
|
||||
fun inject(polarFragment: PolarFragment)
|
||||
fun inject(mapFragment: MapFragment)
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
package com.rtbishop.look4sat.dagger
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Provider
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Singleton
|
||||
class ViewModelFactory @Inject constructor(
|
||||
private val creators: Map<Class<out ViewModel>,
|
||||
@JvmSuppressWildcards Provider<ViewModel>>
|
||||
) : ViewModelProvider.Factory {
|
||||
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
|
||||
val creator = creators[modelClass] ?: creators.entries.firstOrNull {
|
||||
modelClass.isAssignableFrom(it.key)
|
||||
}?.value ?: throw IllegalArgumentException("Unsupported ViewModel class: $modelClass")
|
||||
try {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
return creator.get() as T
|
||||
} catch (e: Exception) {
|
||||
throw RuntimeException(e)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
package com.rtbishop.look4sat.dagger
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import dagger.MapKey
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
@Target(
|
||||
AnnotationTarget.FUNCTION,
|
||||
AnnotationTarget.PROPERTY_GETTER,
|
||||
AnnotationTarget.PROPERTY_SETTER
|
||||
)
|
||||
@Retention(AnnotationRetention.RUNTIME)
|
||||
@MapKey
|
||||
annotation class ViewModelKey(val value: KClass<out ViewModel>)
|
|
@ -1,44 +0,0 @@
|
|||
package com.rtbishop.look4sat.dagger.modules
|
||||
|
||||
import android.content.ContentResolver
|
||||
import android.content.Context
|
||||
import com.rtbishop.look4sat.repo.DefaultRepository
|
||||
import com.rtbishop.look4sat.repo.Repository
|
||||
import com.rtbishop.look4sat.repo.local.EntriesDao
|
||||
import com.rtbishop.look4sat.repo.local.SourcesDao
|
||||
import com.rtbishop.look4sat.repo.local.TransmittersDao
|
||||
import com.rtbishop.look4sat.repo.remote.TransmittersApi
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import okhttp3.OkHttpClient
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Module
|
||||
class RepoModule {
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
fun provideContentResolver(context: Context): ContentResolver {
|
||||
return context.applicationContext.contentResolver
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
fun provideDefaultRepository(
|
||||
resolver: ContentResolver,
|
||||
client: OkHttpClient,
|
||||
transmittersApi: TransmittersApi,
|
||||
entriesDao: EntriesDao,
|
||||
transmittersDao: TransmittersDao,
|
||||
sourcesDao: SourcesDao
|
||||
): Repository {
|
||||
return DefaultRepository(
|
||||
resolver,
|
||||
client,
|
||||
transmittersApi,
|
||||
entriesDao,
|
||||
sourcesDao,
|
||||
transmittersDao
|
||||
)
|
||||
}
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
package com.rtbishop.look4sat.dagger.modules
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import com.rtbishop.look4sat.dagger.ViewModelFactory
|
||||
import com.rtbishop.look4sat.dagger.ViewModelKey
|
||||
import com.rtbishop.look4sat.ui.SharedViewModel
|
||||
import dagger.Binds
|
||||
import dagger.Module
|
||||
import dagger.multibindings.IntoMap
|
||||
|
||||
@Module
|
||||
abstract class ViewModelModule {
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@ViewModelKey(SharedViewModel::class)
|
||||
abstract fun bindSharedViewModel(viewModel: SharedViewModel): ViewModel
|
||||
|
||||
@Binds
|
||||
abstract fun bindViewModelFactory(factory: ViewModelFactory): ViewModelProvider.Factory
|
||||
}
|
|
@ -17,26 +17,29 @@
|
|||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
package com.rtbishop.look4sat.dagger.modules
|
||||
package com.rtbishop.look4sat.di
|
||||
|
||||
import com.rtbishop.look4sat.repo.remote.TransmittersApi
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.android.components.ActivityComponent
|
||||
import dagger.hilt.android.scopes.ActivityScoped
|
||||
import okhttp3.OkHttpClient
|
||||
import retrofit2.Retrofit
|
||||
import retrofit2.converter.moshi.MoshiConverterFactory
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Module
|
||||
@InstallIn(ActivityComponent::class)
|
||||
class NetworkModule {
|
||||
|
||||
@Singleton
|
||||
@ActivityScoped
|
||||
@Provides
|
||||
fun provideWebClient(): OkHttpClient {
|
||||
return OkHttpClient()
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@ActivityScoped
|
||||
@Provides
|
||||
fun provideTransApi(): TransmittersApi {
|
||||
return Retrofit.Builder()
|
|
@ -17,7 +17,7 @@
|
|||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
package com.rtbishop.look4sat.dagger.modules
|
||||
package com.rtbishop.look4sat.di
|
||||
|
||||
import android.content.Context
|
||||
import androidx.room.Room
|
||||
|
@ -27,32 +27,36 @@ import com.rtbishop.look4sat.repo.local.SourcesDao
|
|||
import com.rtbishop.look4sat.repo.local.TransmittersDao
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import javax.inject.Singleton
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.android.components.ActivityComponent
|
||||
import dagger.hilt.android.qualifiers.ActivityContext
|
||||
import dagger.hilt.android.scopes.ActivityScoped
|
||||
|
||||
@Module
|
||||
@InstallIn(ActivityComponent::class)
|
||||
class PersistenceModule {
|
||||
|
||||
@Singleton
|
||||
@ActivityScoped
|
||||
@Provides
|
||||
fun provideEntriesDao(db: SatelliteDb): EntriesDao {
|
||||
return db.entriesDao()
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@ActivityScoped
|
||||
@Provides
|
||||
fun provideTransDao(db: SatelliteDb): TransmittersDao {
|
||||
return db.transmittersDao()
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@ActivityScoped
|
||||
@Provides
|
||||
fun providesSourcesDao(db: SatelliteDb): SourcesDao {
|
||||
return db.sourcesDao()
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@ActivityScoped
|
||||
@Provides
|
||||
fun provideSatDb(context: Context): SatelliteDb {
|
||||
fun provideSatDb(@ActivityContext context: Context): SatelliteDb {
|
||||
return Room.databaseBuilder(context, SatelliteDb::class.java, "satDb").build()
|
||||
}
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
/*
|
||||
* Look4Sat. Amateur radio and weather satellite tracker and passes predictor for Android.
|
||||
* Copyright (C) 2019, 2020 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 2 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, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
package com.rtbishop.look4sat.di
|
||||
|
||||
import android.content.ContentResolver
|
||||
import android.content.Context
|
||||
import com.rtbishop.look4sat.repo.DefaultRepository
|
||||
import com.rtbishop.look4sat.repo.Repository
|
||||
import com.rtbishop.look4sat.repo.local.EntriesDao
|
||||
import com.rtbishop.look4sat.repo.local.SourcesDao
|
||||
import com.rtbishop.look4sat.repo.local.TransmittersDao
|
||||
import com.rtbishop.look4sat.repo.remote.TransmittersApi
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.android.components.ActivityComponent
|
||||
import dagger.hilt.android.qualifiers.ActivityContext
|
||||
import dagger.hilt.android.scopes.ActivityScoped
|
||||
import okhttp3.OkHttpClient
|
||||
|
||||
@Module
|
||||
@InstallIn(ActivityComponent::class)
|
||||
class RepoModule {
|
||||
|
||||
@ActivityScoped
|
||||
@Provides
|
||||
fun provideContentResolver(@ActivityContext context: Context): ContentResolver {
|
||||
return context.applicationContext.contentResolver
|
||||
}
|
||||
|
||||
@ActivityScoped
|
||||
@Provides
|
||||
fun provideDefaultRepository(
|
||||
resolver: ContentResolver,
|
||||
client: OkHttpClient,
|
||||
transmittersApi: TransmittersApi,
|
||||
entriesDao: EntriesDao,
|
||||
transmittersDao: TransmittersDao,
|
||||
sourcesDao: SourcesDao
|
||||
): Repository {
|
||||
return DefaultRepository(
|
||||
resolver,
|
||||
client,
|
||||
transmittersApi,
|
||||
entriesDao,
|
||||
sourcesDao,
|
||||
transmittersDao
|
||||
)
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
package com.rtbishop.look4sat.dagger.modules
|
||||
package com.rtbishop.look4sat.di
|
||||
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
|
@ -26,24 +26,28 @@ import androidx.preference.PreferenceManager
|
|||
import com.rtbishop.look4sat.utility.PrefsManager
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import javax.inject.Singleton
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.android.components.ActivityComponent
|
||||
import dagger.hilt.android.qualifiers.ActivityContext
|
||||
import dagger.hilt.android.scopes.ActivityScoped
|
||||
|
||||
@Module
|
||||
@InstallIn(ActivityComponent::class)
|
||||
class UtilityModule {
|
||||
|
||||
@Singleton
|
||||
@ActivityScoped
|
||||
@Provides
|
||||
fun provideSharedPreferences(context: Context): SharedPreferences {
|
||||
fun provideSharedPreferences(@ActivityContext context: Context): SharedPreferences {
|
||||
return PreferenceManager.getDefaultSharedPreferences(context)
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@ActivityScoped
|
||||
@Provides
|
||||
fun provideLocationManager(context: Context): LocationManager {
|
||||
fun provideLocationManager(@ActivityContext context: Context): LocationManager {
|
||||
return context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@ActivityScoped
|
||||
@Provides
|
||||
fun providePrefsManager(
|
||||
sharedPreferences: SharedPreferences,
|
|
@ -1,4 +1,4 @@
|
|||
package com.rtbishop.look4sat.ui
|
||||
package com.rtbishop.look4sat.ui.activities
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
|
@ -6,7 +6,9 @@ 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
|
||||
|
||||
@AndroidEntryPoint
|
||||
class MainActivity : AppCompatActivity() {
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
|
@ -10,23 +10,19 @@ import androidx.fragment.app.activityViewModels
|
|||
import androidx.navigation.findNavController
|
||||
import androidx.recyclerview.widget.DividerItemDecoration
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.rtbishop.look4sat.Look4SatApp
|
||||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.dagger.ViewModelFactory
|
||||
import com.rtbishop.look4sat.SharedViewModel
|
||||
import com.rtbishop.look4sat.data.SatEntry
|
||||
import com.rtbishop.look4sat.data.TleSource
|
||||
import com.rtbishop.look4sat.databinding.FragmentEntriesBinding
|
||||
import com.rtbishop.look4sat.ui.SharedViewModel
|
||||
import com.rtbishop.look4sat.ui.adapters.EntriesAdapter
|
||||
import javax.inject.Inject
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@AndroidEntryPoint
|
||||
class EntriesFragment : Fragment(R.layout.fragment_entries) {
|
||||
|
||||
@Inject
|
||||
lateinit var factory: ViewModelFactory
|
||||
|
||||
private lateinit var binding: FragmentEntriesBinding
|
||||
private val viewModel: SharedViewModel by activityViewModels { factory }
|
||||
private val viewModel: SharedViewModel by activityViewModels()
|
||||
private val pickFileReqCode = 100
|
||||
private val entriesAdapter = EntriesAdapter()
|
||||
private var tleSources = listOf<TleSource>()
|
||||
|
@ -34,7 +30,6 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) {
|
|||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
binding = FragmentEntriesBinding.bind(view)
|
||||
(requireActivity().application as Look4SatApp).appComponent.inject(this)
|
||||
setupComponents()
|
||||
setupObservers()
|
||||
}
|
||||
|
|
|
@ -28,7 +28,9 @@ import androidx.fragment.app.Fragment
|
|||
import com.rtbishop.look4sat.BuildConfig
|
||||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.databinding.FragmentInfoBinding
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@AndroidEntryPoint
|
||||
class InfoFragment : Fragment(R.layout.fragment_info) {
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
|
|
|
@ -14,15 +14,14 @@ import androidx.fragment.app.activityViewModels
|
|||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.preference.PreferenceManager
|
||||
import com.github.amsacode.predict4java.GroundStationPosition
|
||||
import com.rtbishop.look4sat.Look4SatApp
|
||||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.dagger.ViewModelFactory
|
||||
import com.rtbishop.look4sat.SharedViewModel
|
||||
import com.rtbishop.look4sat.data.Result
|
||||
import com.rtbishop.look4sat.data.SatItem
|
||||
import com.rtbishop.look4sat.data.SatPass
|
||||
import com.rtbishop.look4sat.databinding.FragmentMapBinding
|
||||
import com.rtbishop.look4sat.ui.SharedViewModel
|
||||
import com.rtbishop.look4sat.utility.PrefsManager
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
|
@ -40,11 +39,9 @@ import javax.inject.Inject
|
|||
import kotlin.math.pow
|
||||
import kotlin.math.sqrt
|
||||
|
||||
@AndroidEntryPoint
|
||||
class MapFragment : Fragment(R.layout.fragment_map) {
|
||||
|
||||
@Inject
|
||||
lateinit var factory: ViewModelFactory
|
||||
|
||||
@Inject
|
||||
lateinit var prefsManager: PrefsManager
|
||||
|
||||
|
@ -54,13 +51,12 @@ class MapFragment : Fragment(R.layout.fragment_map) {
|
|||
private lateinit var footprintPaint: Paint
|
||||
private lateinit var selectedPass: SatPass
|
||||
private val dateNow = Date(System.currentTimeMillis())
|
||||
private val viewModel: SharedViewModel by activityViewModels { factory }
|
||||
private val viewModel: SharedViewModel by activityViewModels()
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
binding = FragmentMapBinding.bind(view)
|
||||
mainActivity = requireActivity()
|
||||
(mainActivity.application as Look4SatApp).appComponent.inject(this)
|
||||
|
||||
val prefs = PreferenceManager.getDefaultSharedPreferences(mainActivity.applicationContext)
|
||||
Configuration.getInstance().load(mainActivity.applicationContext, prefs)
|
||||
|
|
|
@ -29,26 +29,23 @@ import androidx.fragment.app.Fragment
|
|||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.SimpleItemAnimator
|
||||
import com.rtbishop.look4sat.Look4SatApp
|
||||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.dagger.ViewModelFactory
|
||||
import com.rtbishop.look4sat.SharedViewModel
|
||||
import com.rtbishop.look4sat.data.Result
|
||||
import com.rtbishop.look4sat.data.SatPass
|
||||
import com.rtbishop.look4sat.databinding.FragmentPassesBinding
|
||||
import com.rtbishop.look4sat.ui.SharedViewModel
|
||||
import com.rtbishop.look4sat.ui.adapters.PassesAdapter
|
||||
import com.rtbishop.look4sat.utility.PrefsManager
|
||||
import com.rtbishop.look4sat.utility.Utilities
|
||||
import com.rtbishop.look4sat.utility.Utilities.getRotationAnimator
|
||||
import com.rtbishop.look4sat.utility.Utilities.snack
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
|
||||
@AndroidEntryPoint
|
||||
class PassesFragment : Fragment(R.layout.fragment_passes) {
|
||||
|
||||
@Inject
|
||||
lateinit var factory: ViewModelFactory
|
||||
|
||||
@Inject
|
||||
lateinit var prefsManager: PrefsManager
|
||||
|
||||
|
@ -56,14 +53,13 @@ class PassesFragment : Fragment(R.layout.fragment_passes) {
|
|||
private lateinit var binding: FragmentPassesBinding
|
||||
private lateinit var animator: ObjectAnimator
|
||||
private lateinit var passesAdapter: PassesAdapter
|
||||
private val viewModel: SharedViewModel by activityViewModels { factory }
|
||||
private val viewModel: SharedViewModel by activityViewModels()
|
||||
private var isTimerSet: Boolean = false
|
||||
private var passes = mutableListOf<SatPass>()
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
binding = FragmentPassesBinding.bind(view)
|
||||
(requireActivity().application as Look4SatApp).appComponent.inject(this)
|
||||
setupComponents()
|
||||
setupObservers()
|
||||
}
|
||||
|
|
|
@ -29,27 +29,24 @@ import androidx.fragment.app.activityViewModels
|
|||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.fragment.navArgs
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.rtbishop.look4sat.Look4SatApp
|
||||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.dagger.ViewModelFactory
|
||||
import com.rtbishop.look4sat.SharedViewModel
|
||||
import com.rtbishop.look4sat.data.Result
|
||||
import com.rtbishop.look4sat.data.SatPass
|
||||
import com.rtbishop.look4sat.databinding.FragmentPolarBinding
|
||||
import com.rtbishop.look4sat.ui.SharedViewModel
|
||||
import com.rtbishop.look4sat.ui.adapters.TransAdapter
|
||||
import com.rtbishop.look4sat.ui.views.PolarView
|
||||
import com.rtbishop.look4sat.utility.PrefsManager
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
import kotlin.math.round
|
||||
|
||||
@AndroidEntryPoint
|
||||
class PolarFragment : Fragment(R.layout.fragment_polar), SensorEventListener {
|
||||
|
||||
@Inject
|
||||
lateinit var factory: ViewModelFactory
|
||||
|
||||
@Inject
|
||||
lateinit var prefsManager: PrefsManager
|
||||
|
||||
|
@ -57,7 +54,7 @@ class PolarFragment : Fragment(R.layout.fragment_polar), SensorEventListener {
|
|||
private lateinit var binding: FragmentPolarBinding
|
||||
private lateinit var satPass: SatPass
|
||||
private lateinit var sensorManager: SensorManager
|
||||
private val viewModel: SharedViewModel by activityViewModels { factory }
|
||||
private val viewModel: SharedViewModel by activityViewModels()
|
||||
private val args: PolarFragmentArgs by navArgs()
|
||||
private val transmitterAdapter = TransAdapter()
|
||||
private var magneticDeclination = 0f
|
||||
|
@ -67,7 +64,6 @@ class PolarFragment : Fragment(R.layout.fragment_polar), SensorEventListener {
|
|||
super.onViewCreated(view, savedInstanceState)
|
||||
mainActivity = requireActivity()
|
||||
binding = FragmentPolarBinding.bind(view)
|
||||
(mainActivity.application as Look4SatApp).appComponent.inject(this)
|
||||
sensorManager = mainActivity.getSystemService(Context.SENSOR_SERVICE) as SensorManager
|
||||
binding.recycler.apply {
|
||||
layoutManager = LinearLayoutManager(mainActivity)
|
||||
|
|
|
@ -27,7 +27,9 @@ import androidx.preference.PreferenceFragmentCompat
|
|||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.utility.PrefsManager
|
||||
import com.rtbishop.look4sat.utility.Utilities.snack
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@AndroidEntryPoint
|
||||
class PrefsFragment : PreferenceFragmentCompat(),
|
||||
SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
|
||||
|
|
|
@ -24,11 +24,13 @@ import android.os.Bundle
|
|||
import android.view.ViewGroup
|
||||
import androidx.appcompat.app.AppCompatDialogFragment
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.rtbishop.look4sat.SharedViewModel
|
||||
import com.rtbishop.look4sat.data.TleSource
|
||||
import com.rtbishop.look4sat.databinding.DialogSourcesBinding
|
||||
import com.rtbishop.look4sat.ui.SharedViewModel
|
||||
import com.rtbishop.look4sat.ui.adapters.SourcesAdapter
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@AndroidEntryPoint
|
||||
class SourcesDialog(sources: List<TleSource>, private val viewModel: SharedViewModel) :
|
||||
AppCompatDialogFragment() {
|
||||
|
||||
|
|
|
@ -28,7 +28,8 @@ buildscript {
|
|||
navigation_version = '2.3.0'
|
||||
lifecycle_version = '2.2.0'
|
||||
room_version = '2.2.5'
|
||||
dagger_version = '2.29.1'
|
||||
hilt_version = '2.29.1-alpha'
|
||||
hilt_viewmodel_version = '1.0.0-alpha02'
|
||||
retrofit_version = '2.9.0'
|
||||
openStreetMap_version = '6.1.8'
|
||||
predict4java_version = '1.3.1'
|
||||
|
@ -39,6 +40,7 @@ buildscript {
|
|||
}
|
||||
dependencies {
|
||||
classpath "com.android.tools.build:gradle:$gradle_version"
|
||||
classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$gradle_plugin_version"
|
||||
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$navigation_version"
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue