mirror of
https://github.com/atsunatsu/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
Renamed and moved several classes
This commit is contained in:
1 parent
5804f42211
commit
4ee74a6789
59 files changed
+563
-449
No files matched your search
+1
-1
@@ -55,7 +55,7 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation project(":data")
|
||||
implementation project(":base")
|
||||
implementation "androidx.core:core-splashscreen:1.0.0-beta01"
|
||||
implementation "androidx.constraintlayout:constraintlayout:2.1.3"
|
||||
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1"
|
||||
|
||||
File renamed without changes.
+8
-8
@@ -26,12 +26,12 @@ import android.location.LocationManager
|
||||
import android.os.Bundle
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.domain.ILocationHandler
|
||||
import com.rtbishop.look4sat.domain.ISettings
|
||||
import com.rtbishop.look4sat.domain.QthConverter
|
||||
import com.rtbishop.look4sat.domain.ILocationManager
|
||||
import com.rtbishop.look4sat.domain.ISettingsManager
|
||||
import com.rtbishop.look4sat.domain.model.DataState
|
||||
import com.rtbishop.look4sat.domain.predict.GeoPos
|
||||
import com.rtbishop.look4sat.domain.round
|
||||
import com.rtbishop.look4sat.utility.QthConverter
|
||||
import com.rtbishop.look4sat.utility.round
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
@@ -39,12 +39,12 @@ import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Singleton
|
||||
class LocationHandler @Inject constructor(
|
||||
class LocationManager @Inject constructor(
|
||||
@ApplicationContext private val context: Context,
|
||||
private val settings: ISettings,
|
||||
) : LocationListener, ILocationHandler {
|
||||
private val manager: LocationManager,
|
||||
private val settings: ISettingsManager,
|
||||
) : LocationListener, ILocationManager {
|
||||
|
||||
private val manager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
|
||||
private val providerDef = LocationManager.PASSIVE_PROVIDER
|
||||
private val providerNet = LocationManager.NETWORK_PROVIDER
|
||||
private val providerGps = LocationManager.GPS_PROVIDER
|
||||
+5
-5
@@ -21,12 +21,13 @@ import android.hardware.Sensor
|
||||
import android.hardware.SensorEvent
|
||||
import android.hardware.SensorEventListener
|
||||
import android.hardware.SensorManager
|
||||
import com.rtbishop.look4sat.domain.predict.RAD2DEG
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
import kotlin.math.round
|
||||
|
||||
@Singleton
|
||||
class OrientationHandler @Inject constructor(private val sensorManager: SensorManager) :
|
||||
class OrientationManager @Inject constructor(private val sensorManager: SensorManager) :
|
||||
SensorEventListener {
|
||||
|
||||
interface OrientationListener {
|
||||
@@ -36,7 +37,6 @@ class OrientationHandler @Inject constructor(private val sensorManager: SensorMa
|
||||
private val sensor: Sensor? = sensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR)
|
||||
private val rotationMatrix = FloatArray(9)
|
||||
private val orientationValues = FloatArray(3)
|
||||
private val oneRadDegrees = 57.295779513f
|
||||
private var sensorAccuracy: Int = SensorManager.SENSOR_STATUS_UNRELIABLE
|
||||
private var orientationListener: OrientationListener? = null
|
||||
|
||||
@@ -67,9 +67,9 @@ class OrientationHandler @Inject constructor(private val sensorManager: SensorMa
|
||||
private fun updateOrientation(rotationVector: FloatArray) {
|
||||
SensorManager.getRotationMatrixFromVector(rotationMatrix, rotationVector)
|
||||
SensorManager.getOrientation(rotationMatrix, orientationValues)
|
||||
val azimuth = orientationValues[0] * oneRadDegrees
|
||||
val pitch = orientationValues[1] * oneRadDegrees
|
||||
val roll = orientationValues[2] * oneRadDegrees
|
||||
val azimuth = (orientationValues[0] * RAD2DEG).toFloat()
|
||||
val pitch = (orientationValues[1] * RAD2DEG).toFloat()
|
||||
val roll = (orientationValues[2] * RAD2DEG).toFloat()
|
||||
val magneticAzimuth = (azimuth + 360f) % 360f
|
||||
val roundedAzimuth = round(magneticAzimuth * 10) / 10
|
||||
val roundedPitch = round(pitch * 10) / 10
|
||||
+2
-2
@@ -19,13 +19,13 @@ package com.rtbishop.look4sat.framework
|
||||
|
||||
import android.content.SharedPreferences
|
||||
import androidx.core.content.edit
|
||||
import com.rtbishop.look4sat.domain.ISettings
|
||||
import com.rtbishop.look4sat.domain.ISettingsManager
|
||||
import com.rtbishop.look4sat.domain.predict.GeoPos
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Singleton
|
||||
class SettingsHandler @Inject constructor(private val prefs: SharedPreferences) : ISettings {
|
||||
class SettingsManager @Inject constructor(private val prefs: SharedPreferences) : ISettingsManager {
|
||||
|
||||
companion object {
|
||||
const val keyDataSources = "dataSources"
|
||||
+4
-10
@@ -19,24 +19,18 @@ package com.rtbishop.look4sat.framework.data
|
||||
|
||||
import android.content.ContentResolver
|
||||
import android.net.Uri
|
||||
import com.rtbishop.look4sat.data.IProvider
|
||||
import com.rtbishop.look4sat.domain.data.IFileDataSource
|
||||
import kotlinx.coroutines.CoroutineDispatcher
|
||||
import kotlinx.coroutines.withContext
|
||||
import java.io.InputStream
|
||||
import java.net.URL
|
||||
|
||||
class Provider(
|
||||
class FileDataSource(
|
||||
private val contentResolver: ContentResolver,
|
||||
private val ioDispatcher: CoroutineDispatcher
|
||||
) : IProvider {
|
||||
) : IFileDataSource {
|
||||
|
||||
@Suppress("BlockingMethodInNonBlockingContext")
|
||||
override suspend fun getLocalFileStream(uri: String): InputStream? {
|
||||
override suspend fun getDataStream(uri: String): InputStream? {
|
||||
return withContext(ioDispatcher) { contentResolver.openInputStream(Uri.parse(uri)) }
|
||||
}
|
||||
|
||||
@Suppress("BlockingMethodInNonBlockingContext")
|
||||
override suspend fun getRemoteFileStream(url: String): InputStream? {
|
||||
return withContext(ioDispatcher) { URL(url).openStream() }
|
||||
}
|
||||
}
|
||||
+3
-1
@@ -19,11 +19,13 @@ package com.rtbishop.look4sat.framework.data
|
||||
|
||||
import androidx.room.Database
|
||||
import androidx.room.RoomDatabase
|
||||
import com.rtbishop.look4sat.framework.data.dao.EntriesDao
|
||||
import com.rtbishop.look4sat.framework.data.dao.RadiosDao
|
||||
import com.rtbishop.look4sat.framework.model.SatEntry
|
||||
import com.rtbishop.look4sat.framework.model.SatRadio
|
||||
|
||||
@Database(entities = [SatEntry::class, SatRadio::class], version = 1, exportSchema = true)
|
||||
abstract class StorageDb : RoomDatabase() {
|
||||
abstract class LocalDatabase : RoomDatabase() {
|
||||
|
||||
abstract fun entriesDao(): EntriesDao
|
||||
|
||||
+4
-32
@@ -17,21 +17,18 @@
|
||||
*/
|
||||
package com.rtbishop.look4sat.framework.data
|
||||
|
||||
import com.rtbishop.look4sat.data.IStorage
|
||||
import com.rtbishop.look4sat.domain.data.ILocalEntrySource
|
||||
import com.rtbishop.look4sat.domain.predict.Satellite
|
||||
import com.rtbishop.look4sat.framework.data.dao.EntriesDao
|
||||
import com.rtbishop.look4sat.domain.model.SatEntry as DomainEntry
|
||||
import com.rtbishop.look4sat.domain.model.SatItem as DomainItem
|
||||
import com.rtbishop.look4sat.domain.model.SatRadio as DomainRadio
|
||||
import com.rtbishop.look4sat.framework.model.SatEntry as FrameworkEntry
|
||||
import com.rtbishop.look4sat.framework.model.SatItem as FrameworkItem
|
||||
import com.rtbishop.look4sat.framework.model.SatRadio as FrameworkRadio
|
||||
|
||||
class Storage(private val entriesDao: EntriesDao, private val radiosDao: RadiosDao) : IStorage {
|
||||
class LocalEntrySource(private val entriesDao: EntriesDao) : ILocalEntrySource {
|
||||
|
||||
override fun getEntriesTotal() = entriesDao.getEntriesTotal()
|
||||
|
||||
override fun getRadiosTotal() = radiosDao.getRadiosTotal()
|
||||
|
||||
override suspend fun getEntriesWithModes(): List<DomainItem> {
|
||||
return entriesDao.getEntriesWithModes().toDomainItems()
|
||||
}
|
||||
@@ -45,42 +42,17 @@ class Storage(private val entriesDao: EntriesDao, private val radiosDao: RadiosD
|
||||
return selectedSatellites
|
||||
}
|
||||
|
||||
override suspend fun getRadiosWithId(id: Int): List<DomainRadio> {
|
||||
return radiosDao.getRadiosWithId(id).toDomainRadios()
|
||||
}
|
||||
|
||||
override suspend fun insertEntries(entries: List<DomainEntry>) {
|
||||
entriesDao.insertEntries(entries.toFrameworkEntries())
|
||||
}
|
||||
|
||||
override suspend fun insertRadios(radios: List<DomainRadio>) {
|
||||
radiosDao.insertRadios(radios.toFrameworkRadios())
|
||||
}
|
||||
|
||||
override suspend fun clearAllData() {
|
||||
entriesDao.deleteEntries()
|
||||
radiosDao.deleteRadios()
|
||||
}
|
||||
override suspend fun deleteEntries() = entriesDao.deleteEntries()
|
||||
|
||||
private fun DomainEntry.toFramework() = FrameworkEntry(this.data, this.comment)
|
||||
|
||||
private fun DomainRadio.toFramework() = FrameworkRadio(
|
||||
this.uuid, this.info, this.isAlive, this.downlink, this.uplink,
|
||||
this.mode, this.isInverted, this.catnum, this.comment
|
||||
)
|
||||
|
||||
private fun FrameworkItem.toDomain() = DomainItem(this.catnum, this.name, this.modes, false)
|
||||
|
||||
private fun FrameworkRadio.toDomain() = DomainRadio(
|
||||
this.uuid, this.info, this.isAlive, this.downlink, this.uplink,
|
||||
this.mode, this.isInverted, this.catnum, this.comment
|
||||
)
|
||||
|
||||
private fun List<DomainEntry>.toFrameworkEntries() = this.map { entry -> entry.toFramework() }
|
||||
|
||||
private fun List<DomainRadio>.toFrameworkRadios() = this.map { radio -> radio.toFramework() }
|
||||
|
||||
private fun List<FrameworkItem>.toDomainItems() = this.map { item -> item.toDomain() }
|
||||
|
||||
private fun List<FrameworkRadio>.toDomainRadios() = this.map { radio -> radio.toDomain() }
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Look4Sat. Amateur radio satellite tracker and pass predictor.
|
||||
* Copyright (C) 2019-2022 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.framework.data
|
||||
|
||||
import com.rtbishop.look4sat.domain.data.ILocalRadioSource
|
||||
import com.rtbishop.look4sat.framework.data.dao.RadiosDao
|
||||
import com.rtbishop.look4sat.domain.model.SatRadio as DomainRadio
|
||||
import com.rtbishop.look4sat.framework.model.SatRadio as FrameworkRadio
|
||||
|
||||
class LocalRadioSource(private val radiosDao: RadiosDao) : ILocalRadioSource {
|
||||
|
||||
override fun getRadiosTotal() = radiosDao.getRadiosTotal()
|
||||
|
||||
override suspend fun getRadiosWithId(id: Int): List<DomainRadio> {
|
||||
return radiosDao.getRadiosWithId(id).toDomainRadios()
|
||||
}
|
||||
|
||||
override suspend fun insertRadios(radios: List<DomainRadio>) {
|
||||
radiosDao.insertRadios(radios.toFrameworkRadios())
|
||||
}
|
||||
|
||||
override suspend fun deleteRadios() = radiosDao.deleteRadios()
|
||||
|
||||
private fun DomainRadio.toFramework() = FrameworkRadio(
|
||||
this.uuid, this.info, this.isAlive, this.downlink, this.uplink,
|
||||
this.mode, this.isInverted, this.catnum, this.comment
|
||||
)
|
||||
|
||||
private fun FrameworkRadio.toDomain() = DomainRadio(
|
||||
this.uuid, this.info, this.isAlive, this.downlink, this.uplink,
|
||||
this.mode, this.isInverted, this.catnum, this.comment
|
||||
)
|
||||
|
||||
private fun List<DomainRadio>.toFrameworkRadios() = this.map { radio -> radio.toFramework() }
|
||||
|
||||
private fun List<FrameworkRadio>.toDomainRadios() = this.map { radio -> radio.toDomain() }
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Look4Sat. Amateur radio satellite tracker and pass predictor.
|
||||
* Copyright (C) 2019-2022 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.framework.data
|
||||
|
||||
import com.rtbishop.look4sat.domain.data.IRemoteDataSource
|
||||
import kotlinx.coroutines.CoroutineDispatcher
|
||||
import kotlinx.coroutines.withContext
|
||||
import java.io.InputStream
|
||||
import java.net.URL
|
||||
|
||||
class RemoteDataSource(private val ioDispatcher: CoroutineDispatcher) : IRemoteDataSource {
|
||||
|
||||
@Suppress("BlockingMethodInNonBlockingContext")
|
||||
override suspend fun getDataStream(url: String): InputStream? = withContext(ioDispatcher) {
|
||||
URL(url).openStream()
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -15,7 +15,7 @@
|
||||
* 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.framework.data
|
||||
package com.rtbishop.look4sat.framework.data.dao
|
||||
|
||||
import androidx.room.*
|
||||
import com.rtbishop.look4sat.framework.model.SatEntry
|
||||
+1
-1
@@ -15,7 +15,7 @@
|
||||
* 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.framework.data
|
||||
package com.rtbishop.look4sat.framework.data.dao
|
||||
|
||||
import androidx.room.*
|
||||
import com.rtbishop.look4sat.framework.model.SatRadio
|
||||
@@ -17,7 +17,6 @@
|
||||
*/
|
||||
package com.rtbishop.look4sat.injection
|
||||
|
||||
import android.content.ContentResolver
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import android.hardware.SensorManager
|
||||
@@ -27,21 +26,12 @@ import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import dagger.hilt.components.SingletonComponent
|
||||
import kotlinx.coroutines.CoroutineDispatcher
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import javax.inject.Qualifier
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Module
|
||||
@InstallIn(SingletonComponent::class)
|
||||
object AppModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideContentResolver(@ApplicationContext context: Context): ContentResolver {
|
||||
return context.contentResolver
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideLocationManager(@ApplicationContext context: Context): LocationManager {
|
||||
@@ -59,20 +49,4 @@ object AppModule {
|
||||
fun provideSharedPreferences(@ApplicationContext context: Context): SharedPreferences {
|
||||
return context.getSharedPreferences("default", Context.MODE_PRIVATE)
|
||||
}
|
||||
|
||||
@Provides
|
||||
@DefaultDispatcher
|
||||
fun provideDefaultDispatcher(): CoroutineDispatcher = Dispatchers.Default
|
||||
|
||||
@Provides
|
||||
@IoDispatcher
|
||||
fun provideIoDispatcher(): CoroutineDispatcher = Dispatchers.IO
|
||||
}
|
||||
|
||||
@Qualifier
|
||||
@Retention(AnnotationRetention.BINARY)
|
||||
annotation class DefaultDispatcher
|
||||
|
||||
@Qualifier
|
||||
@Retention(AnnotationRetention.BINARY)
|
||||
annotation class IoDispatcher
|
||||
@@ -0,0 +1,76 @@
|
||||
/*
|
||||
* Look4Sat. Amateur radio satellite tracker and pass predictor.
|
||||
* Copyright (C) 2019-2022 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.injection
|
||||
|
||||
import android.content.Context
|
||||
import androidx.room.Room
|
||||
import com.rtbishop.look4sat.domain.IDataRepository
|
||||
import com.rtbishop.look4sat.domain.ILocationManager
|
||||
import com.rtbishop.look4sat.domain.ISatelliteManager
|
||||
import com.rtbishop.look4sat.domain.ISettingsManager
|
||||
import com.rtbishop.look4sat.domain.data.DataRepository
|
||||
import com.rtbishop.look4sat.domain.predict.SatelliteManager
|
||||
import com.rtbishop.look4sat.framework.LocationManager
|
||||
import com.rtbishop.look4sat.framework.SettingsManager
|
||||
import com.rtbishop.look4sat.framework.data.*
|
||||
import com.rtbishop.look4sat.utility.DataParser
|
||||
import com.rtbishop.look4sat.utility.DataReporter
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import dagger.hilt.components.SingletonComponent
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.SupervisorJob
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Module
|
||||
@InstallIn(SingletonComponent::class)
|
||||
object BaseModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideDataRepository(@ApplicationContext context: Context): IDataRepository {
|
||||
val db = Room.databaseBuilder(context, LocalDatabase::class.java, "Look4SatDb")
|
||||
.fallbackToDestructiveMigration().build()
|
||||
val parser = DataParser(Dispatchers.Default)
|
||||
val fileSource = FileDataSource(context.contentResolver, Dispatchers.IO)
|
||||
val entries = LocalEntrySource(db.entriesDao())
|
||||
val radios = LocalRadioSource(db.radiosDao())
|
||||
val remoteSource = RemoteDataSource(Dispatchers.IO)
|
||||
val repositoryScope = CoroutineScope(SupervisorJob() + Dispatchers.Default)
|
||||
return DataRepository(parser, fileSource, entries, radios, remoteSource, repositoryScope)
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideDataReporter(): DataReporter = DataReporter(CoroutineScope(Dispatchers.IO))
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideLocationManager(manager: LocationManager): ILocationManager = manager
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideSatelliteManager(): ISatelliteManager = SatelliteManager(Dispatchers.Default)
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideSettingsManager(manager: SettingsManager): ISettingsManager = manager
|
||||
}
|
||||
@@ -1,91 +0,0 @@
|
||||
/*
|
||||
* Look4Sat. Amateur radio satellite tracker and pass predictor.
|
||||
* Copyright (C) 2019-2022 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.injection
|
||||
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import androidx.room.Room
|
||||
import com.rtbishop.look4sat.data.DataParser
|
||||
import com.rtbishop.look4sat.data.Repository
|
||||
import com.rtbishop.look4sat.domain.DataReporter
|
||||
import com.rtbishop.look4sat.domain.ILocationHandler
|
||||
import com.rtbishop.look4sat.domain.IRepository
|
||||
import com.rtbishop.look4sat.domain.ISettings
|
||||
import com.rtbishop.look4sat.domain.predict.Predictor
|
||||
import com.rtbishop.look4sat.framework.LocationHandler
|
||||
import com.rtbishop.look4sat.framework.SettingsHandler
|
||||
import com.rtbishop.look4sat.framework.data.Provider
|
||||
import com.rtbishop.look4sat.framework.data.Storage
|
||||
import com.rtbishop.look4sat.framework.data.StorageDb
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import dagger.hilt.components.SingletonComponent
|
||||
import kotlinx.coroutines.CoroutineDispatcher
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.SupervisorJob
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Module
|
||||
@InstallIn(SingletonComponent::class)
|
||||
object DataModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideSatelliteRepo(
|
||||
@ApplicationContext context: Context,
|
||||
@IoDispatcher ioDispatcher: CoroutineDispatcher,
|
||||
@DefaultDispatcher defaultDispatcher: CoroutineDispatcher
|
||||
): IRepository {
|
||||
val db = Room.databaseBuilder(context, StorageDb::class.java, "Look4SatDb")
|
||||
.fallbackToDestructiveMigration().build()
|
||||
val dataParser = DataParser(defaultDispatcher)
|
||||
val localSource = Storage(db.entriesDao(), db.radiosDao())
|
||||
val remoteSource = Provider(context.contentResolver, ioDispatcher)
|
||||
val repositoryScope = CoroutineScope(SupervisorJob())
|
||||
return Repository(dataParser, localSource, remoteSource, repositoryScope)
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideSettingsHandler(sharedPreferences: SharedPreferences): ISettings {
|
||||
return SettingsHandler(sharedPreferences)
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideLocationHandler(
|
||||
@ApplicationContext context: Context,
|
||||
settings: ISettings
|
||||
): ILocationHandler {
|
||||
return LocationHandler(context, settings)
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun providePredictor(@DefaultDispatcher dispatcher: CoroutineDispatcher): Predictor {
|
||||
return Predictor(dispatcher)
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideDataReporter(@IoDispatcher dispatcher: CoroutineDispatcher): DataReporter {
|
||||
return DataReporter(dispatcher)
|
||||
}
|
||||
}
|
||||
+4
-4
@@ -18,8 +18,8 @@
|
||||
package com.rtbishop.look4sat.presentation.entriesScreen
|
||||
|
||||
import androidx.lifecycle.*
|
||||
import com.rtbishop.look4sat.domain.IRepository
|
||||
import com.rtbishop.look4sat.domain.ISettings
|
||||
import com.rtbishop.look4sat.domain.IDataRepository
|
||||
import com.rtbishop.look4sat.domain.ISettingsManager
|
||||
import com.rtbishop.look4sat.domain.model.DataState
|
||||
import com.rtbishop.look4sat.domain.model.SatItem
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
@@ -29,8 +29,8 @@ import javax.inject.Inject
|
||||
|
||||
@HiltViewModel
|
||||
class EntriesViewModel @Inject constructor(
|
||||
private val repository: IRepository,
|
||||
private val settings: ISettings
|
||||
private val repository: IDataRepository,
|
||||
private val settings: ISettingsManager
|
||||
) : ViewModel(), EntriesAdapter.EntriesClickListener {
|
||||
|
||||
private val transModes = MutableLiveData(settings.loadModesSelection())
|
||||
|
||||
@@ -27,7 +27,7 @@ import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.SimpleItemAnimator
|
||||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.databinding.DialogModesBinding
|
||||
import com.rtbishop.look4sat.domain.ISettings
|
||||
import com.rtbishop.look4sat.domain.ISettingsManager
|
||||
import com.rtbishop.look4sat.presentation.setNavResult
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import javax.inject.Inject
|
||||
@@ -36,7 +36,7 @@ import javax.inject.Inject
|
||||
class ModesDialog : AppCompatDialogFragment(), ModesAdapter.ModesClickListener {
|
||||
|
||||
@Inject
|
||||
lateinit var preferences: ISettings
|
||||
lateinit var preferences: ISettingsManager
|
||||
private lateinit var binding: DialogModesBinding
|
||||
private val allModes = listOf(
|
||||
"AFSK", "AFSK S-Net", "AFSK SALSAT", "AHRPT", "AM", "APT", "BPSK", "BPSK PMT-A3",
|
||||
|
||||
@@ -18,13 +18,13 @@
|
||||
package com.rtbishop.look4sat.presentation.mapScreen
|
||||
|
||||
import androidx.lifecycle.*
|
||||
import com.rtbishop.look4sat.domain.IRepository
|
||||
import com.rtbishop.look4sat.domain.ISettings
|
||||
import com.rtbishop.look4sat.domain.QthConverter
|
||||
import com.rtbishop.look4sat.domain.IDataRepository
|
||||
import com.rtbishop.look4sat.domain.ISatelliteManager
|
||||
import com.rtbishop.look4sat.domain.ISettingsManager
|
||||
import com.rtbishop.look4sat.domain.predict.GeoPos
|
||||
import com.rtbishop.look4sat.domain.predict.Predictor
|
||||
import com.rtbishop.look4sat.domain.predict.SatPos
|
||||
import com.rtbishop.look4sat.domain.predict.Satellite
|
||||
import com.rtbishop.look4sat.utility.QthConverter
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.*
|
||||
import java.util.*
|
||||
@@ -34,9 +34,9 @@ import kotlin.math.min
|
||||
|
||||
@HiltViewModel
|
||||
class MapViewModel @Inject constructor(
|
||||
private val predictor: Predictor,
|
||||
private val repository: IRepository,
|
||||
private val settings: ISettings,
|
||||
private val satelliteManager: ISatelliteManager,
|
||||
private val repository: IDataRepository,
|
||||
private val settings: ISettingsManager,
|
||||
) : ViewModel() {
|
||||
|
||||
private val stationPosition = settings.loadStationPosition()
|
||||
@@ -115,7 +115,7 @@ class MapViewModel @Inject constructor(
|
||||
val currentTrack = mutableListOf<GeoPos>()
|
||||
val endDate = Date(date.time + (satellite.orbitalPeriod * 2.4 * 60000L).toLong())
|
||||
var oldLongitude = 0.0
|
||||
predictor.getSatTrack(satellite, pos, date.time, endDate.time).forEach { satPos ->
|
||||
satelliteManager.getTrack(satellite, pos, date.time, endDate.time).forEach { satPos ->
|
||||
val osmLat = clipLat(Math.toDegrees(satPos.latitude))
|
||||
val osmLon = clipLon(Math.toDegrees(satPos.longitude))
|
||||
val currentPosition = GeoPos(osmLat, osmLon)
|
||||
@@ -142,7 +142,7 @@ class MapViewModel @Inject constructor(
|
||||
private suspend fun getPositions(satellites: List<Satellite>, pos: GeoPos, date: Date) {
|
||||
val positions = mutableMapOf<Satellite, GeoPos>()
|
||||
satellites.forEach { satellite ->
|
||||
val satPos = predictor.getSatPos(satellite, pos, date.time)
|
||||
val satPos = satelliteManager.getPosition(satellite, pos, date.time)
|
||||
val osmLat = clipLat(Math.toDegrees(satPos.latitude))
|
||||
val osmLon = clipLon(Math.toDegrees(satPos.longitude))
|
||||
positions[satellite] = GeoPos(osmLat, osmLon)
|
||||
@@ -151,12 +151,12 @@ class MapViewModel @Inject constructor(
|
||||
}
|
||||
|
||||
private suspend fun getSatFootprint(satellite: Satellite, pos: GeoPos, date: Date) {
|
||||
val satPos = predictor.getSatPos(satellite, pos, date.time)
|
||||
val satPos = satelliteManager.getPosition(satellite, pos, date.time)
|
||||
_footprint.postValue(satPos)
|
||||
}
|
||||
|
||||
private suspend fun getSatData(satellite: Satellite, pos: GeoPos, date: Date) {
|
||||
val satPos = predictor.getSatPos(satellite, pos, date.time)
|
||||
val satPos = satelliteManager.getPosition(satellite, pos, date.time)
|
||||
val osmLat = clipLat(Math.toDegrees(satPos.latitude))
|
||||
val osmLon = clipLon(Math.toDegrees(satPos.longitude))
|
||||
val osmPos = GeoPos(osmLat, osmLon)
|
||||
|
||||
@@ -25,7 +25,7 @@ import android.view.WindowManager
|
||||
import androidx.appcompat.app.AppCompatDialogFragment
|
||||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.databinding.DialogFilterBinding
|
||||
import com.rtbishop.look4sat.domain.ISettings
|
||||
import com.rtbishop.look4sat.domain.ISettingsManager
|
||||
import com.rtbishop.look4sat.presentation.setNavResult
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import javax.inject.Inject
|
||||
@@ -34,7 +34,7 @@ import javax.inject.Inject
|
||||
class FilterDialog : AppCompatDialogFragment() {
|
||||
|
||||
@Inject
|
||||
lateinit var preferences: ISettings
|
||||
lateinit var preferences: ISettingsManager
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, group: ViewGroup?, state: Bundle?): View? {
|
||||
return inflater.inflate(R.layout.dialog_filter, group, false)
|
||||
|
||||
@@ -31,8 +31,8 @@ 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.domain.toTimerString
|
||||
import com.rtbishop.look4sat.presentation.getNavResult
|
||||
import com.rtbishop.look4sat.utility.toTimerString
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@AndroidEntryPoint
|
||||
|
||||
+9
-9
@@ -18,10 +18,10 @@
|
||||
package com.rtbishop.look4sat.presentation.passesScreen
|
||||
|
||||
import androidx.lifecycle.*
|
||||
import com.rtbishop.look4sat.domain.IRepository
|
||||
import com.rtbishop.look4sat.domain.ISettings
|
||||
import com.rtbishop.look4sat.domain.IDataRepository
|
||||
import com.rtbishop.look4sat.domain.ISatelliteManager
|
||||
import com.rtbishop.look4sat.domain.ISettingsManager
|
||||
import com.rtbishop.look4sat.domain.model.DataState
|
||||
import com.rtbishop.look4sat.domain.predict.Predictor
|
||||
import com.rtbishop.look4sat.domain.predict.SatPass
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.*
|
||||
@@ -29,9 +29,9 @@ import javax.inject.Inject
|
||||
|
||||
@HiltViewModel
|
||||
class PassesViewModel @Inject constructor(
|
||||
private val predictor: Predictor,
|
||||
private val repository: IRepository,
|
||||
private val settings: ISettings
|
||||
private val satelliteManager: ISatelliteManager,
|
||||
private val repository: IDataRepository,
|
||||
private val settings: ISettingsManager
|
||||
) : ViewModel() {
|
||||
|
||||
private var passesProcessing: Job? = null
|
||||
@@ -41,12 +41,12 @@ class PassesViewModel @Inject constructor(
|
||||
|
||||
init {
|
||||
viewModelScope.launch {
|
||||
predictor.calculatedPasses.collect { passes ->
|
||||
satelliteManager.calculatedPasses.collect { passes ->
|
||||
passesProcessing?.cancelAndJoin()
|
||||
passesProcessing = viewModelScope.launch {
|
||||
while (isActive) {
|
||||
val time = System.currentTimeMillis()
|
||||
val newPasses = predictor.processPasses(passes, time)
|
||||
val newPasses = satelliteManager.processPasses(passes, time)
|
||||
_passes.postValue(DataState.Success(newPasses))
|
||||
delay(1000)
|
||||
}
|
||||
@@ -73,7 +73,7 @@ class PassesViewModel @Inject constructor(
|
||||
val stationPos = settings.loadStationPosition()
|
||||
val selectedIds = settings.loadEntriesSelection()
|
||||
val satellites = repository.getEntriesWithIds(selectedIds)
|
||||
predictor.forceCalculation(satellites, stationPos, timeRef, hoursAhead, minElevation)
|
||||
satelliteManager.calculatePasses(satellites, stationPos, timeRef, hoursAhead, minElevation)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,7 @@ import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.databinding.FragmentRadarBinding
|
||||
import com.rtbishop.look4sat.domain.predict.SatPass
|
||||
import com.rtbishop.look4sat.domain.predict.SatPos
|
||||
import com.rtbishop.look4sat.domain.toTimerString
|
||||
import com.rtbishop.look4sat.utility.toTimerString
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@AndroidEntryPoint
|
||||
|
||||
+17
-17
@@ -19,16 +19,16 @@ package com.rtbishop.look4sat.presentation.radarScreen
|
||||
|
||||
import android.hardware.GeomagneticField
|
||||
import androidx.lifecycle.*
|
||||
import com.rtbishop.look4sat.domain.DataReporter
|
||||
import com.rtbishop.look4sat.domain.IRepository
|
||||
import com.rtbishop.look4sat.domain.ISettings
|
||||
import com.rtbishop.look4sat.domain.IDataRepository
|
||||
import com.rtbishop.look4sat.domain.ISatelliteManager
|
||||
import com.rtbishop.look4sat.domain.ISettingsManager
|
||||
import com.rtbishop.look4sat.domain.model.SatRadio
|
||||
import com.rtbishop.look4sat.domain.predict.GeoPos
|
||||
import com.rtbishop.look4sat.domain.predict.Predictor
|
||||
import com.rtbishop.look4sat.domain.predict.SatPass
|
||||
import com.rtbishop.look4sat.domain.predict.SatPos
|
||||
import com.rtbishop.look4sat.domain.round
|
||||
import com.rtbishop.look4sat.framework.OrientationHandler
|
||||
import com.rtbishop.look4sat.framework.OrientationManager
|
||||
import com.rtbishop.look4sat.utility.DataReporter
|
||||
import com.rtbishop.look4sat.utility.round
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.isActive
|
||||
@@ -38,12 +38,12 @@ import javax.inject.Inject
|
||||
|
||||
@HiltViewModel
|
||||
class RadarViewModel @Inject constructor(
|
||||
private val orientationHandler: OrientationHandler,
|
||||
private val orientationManager: OrientationManager,
|
||||
private val reporter: DataReporter,
|
||||
private val predictor: Predictor,
|
||||
private val repository: IRepository,
|
||||
private val settings: ISettings
|
||||
) : ViewModel(), OrientationHandler.OrientationListener {
|
||||
private val satelliteManager: ISatelliteManager,
|
||||
private val repository: IDataRepository,
|
||||
private val settings: ISettingsManager
|
||||
) : ViewModel(), OrientationManager.OrientationListener {
|
||||
|
||||
private val stationPos = settings.loadStationPosition()
|
||||
private val _passData = MutableLiveData<RadarData>()
|
||||
@@ -54,7 +54,7 @@ class RadarViewModel @Inject constructor(
|
||||
val orientation: LiveData<Triple<Float, Float, Float>> = _orientation
|
||||
|
||||
fun getPass(catNum: Int, aosTime: Long) = liveData {
|
||||
predictor.calculatedPasses.collect { passes ->
|
||||
satelliteManager.calculatedPasses.collect { passes ->
|
||||
val pass = passes.find { pass -> pass.catNum == catNum && pass.aosTime == aosTime }
|
||||
pass?.let { satPass ->
|
||||
emit(satPass)
|
||||
@@ -65,11 +65,11 @@ class RadarViewModel @Inject constructor(
|
||||
}
|
||||
|
||||
fun enableSensor() {
|
||||
if (settings.getUseCompass()) orientationHandler.startListening(this)
|
||||
if (settings.getUseCompass()) orientationManager.startListening(this)
|
||||
}
|
||||
|
||||
fun disableSensor() {
|
||||
if (settings.getUseCompass()) orientationHandler.stopListening()
|
||||
if (settings.getUseCompass()) orientationManager.stopListening()
|
||||
}
|
||||
|
||||
fun getUseCompass(): Boolean = settings.getUseCompass()
|
||||
@@ -92,10 +92,10 @@ class RadarViewModel @Inject constructor(
|
||||
if (!satPass.isDeepSpace) {
|
||||
val startDate = satPass.aosTime
|
||||
val endDate = satPass.losTime
|
||||
satTrack = predictor.getSatTrack(satPass.satellite, stationPos, startDate, endDate)
|
||||
satTrack = satelliteManager.getTrack(satPass.satellite, stationPos, startDate, endDate)
|
||||
}
|
||||
while (isActive) {
|
||||
val satPos = predictor.getSatPos(satPass.satellite, stationPos, Date().time)
|
||||
val satPos = satelliteManager.getPosition(satPass.satellite, stationPos, Date().time)
|
||||
if (settings.getRotatorEnabled()) {
|
||||
val server = settings.getRotatorServer()
|
||||
val port = settings.getRotatorPort().toInt()
|
||||
@@ -115,7 +115,7 @@ class RadarViewModel @Inject constructor(
|
||||
val transmitters = repository.getRadiosWithId(pass.catNum)
|
||||
while (isActive) {
|
||||
val time = System.currentTimeMillis()
|
||||
val list = predictor.processRadios(pass.satellite, stationPos, transmitters, time)
|
||||
val list = satelliteManager.processRadios(pass.satellite, stationPos, transmitters, time)
|
||||
_transmitters.postValue(list)
|
||||
delay(1000)
|
||||
}
|
||||
|
||||
+2
-2
@@ -25,7 +25,7 @@ import android.view.WindowManager
|
||||
import androidx.appcompat.app.AppCompatDialogFragment
|
||||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.databinding.DialogLocatorBinding
|
||||
import com.rtbishop.look4sat.domain.ISettings
|
||||
import com.rtbishop.look4sat.domain.ISettingsManager
|
||||
import com.rtbishop.look4sat.presentation.setNavResult
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import javax.inject.Inject
|
||||
@@ -34,7 +34,7 @@ import javax.inject.Inject
|
||||
class LocatorDialog : AppCompatDialogFragment() {
|
||||
|
||||
@Inject
|
||||
lateinit var preferences: ISettings
|
||||
lateinit var preferences: ISettingsManager
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, group: ViewGroup?, state: Bundle?): View? {
|
||||
return inflater.inflate(R.layout.dialog_locator, group, false)
|
||||
|
||||
+2
-2
@@ -25,7 +25,7 @@ import android.view.WindowManager
|
||||
import androidx.appcompat.app.AppCompatDialogFragment
|
||||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.databinding.DialogPositionBinding
|
||||
import com.rtbishop.look4sat.domain.ISettings
|
||||
import com.rtbishop.look4sat.domain.ISettingsManager
|
||||
import com.rtbishop.look4sat.presentation.setNavResult
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import javax.inject.Inject
|
||||
@@ -34,7 +34,7 @@ import javax.inject.Inject
|
||||
class PositionDialog : AppCompatDialogFragment() {
|
||||
|
||||
@Inject
|
||||
lateinit var preferences: ISettings
|
||||
lateinit var preferences: ISettingsManager
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, group: ViewGroup?, state: Bundle?): View? {
|
||||
return inflater.inflate(R.layout.dialog_position, group, false)
|
||||
|
||||
+2
-2
@@ -34,11 +34,11 @@ import androidx.navigation.fragment.findNavController
|
||||
import com.rtbishop.look4sat.BuildConfig
|
||||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.databinding.FragmentSettingsBinding
|
||||
import com.rtbishop.look4sat.domain.isValidIPv4
|
||||
import com.rtbishop.look4sat.domain.isValidPort
|
||||
import com.rtbishop.look4sat.domain.model.DataState
|
||||
import com.rtbishop.look4sat.domain.predict.GeoPos
|
||||
import com.rtbishop.look4sat.presentation.getNavResult
|
||||
import com.rtbishop.look4sat.utility.isValidIPv4
|
||||
import com.rtbishop.look4sat.utility.isValidPort
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@AndroidEntryPoint
|
||||
|
||||
+13
-13
@@ -19,9 +19,9 @@ package com.rtbishop.look4sat.presentation.settingsScreen
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.asLiveData
|
||||
import com.rtbishop.look4sat.domain.ILocationHandler
|
||||
import com.rtbishop.look4sat.domain.IRepository
|
||||
import com.rtbishop.look4sat.domain.ISettings
|
||||
import com.rtbishop.look4sat.domain.IDataRepository
|
||||
import com.rtbishop.look4sat.domain.ILocationManager
|
||||
import com.rtbishop.look4sat.domain.ISettingsManager
|
||||
import com.rtbishop.look4sat.domain.model.DataState
|
||||
import com.rtbishop.look4sat.domain.predict.GeoPos
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
@@ -30,9 +30,9 @@ import javax.inject.Inject
|
||||
|
||||
@HiltViewModel
|
||||
class SettingsViewModel @Inject constructor(
|
||||
private val locationHandler: ILocationHandler,
|
||||
private val repository: IRepository,
|
||||
private val settings: ISettings
|
||||
private val locationManager: ILocationManager,
|
||||
private val repository: IDataRepository,
|
||||
private val settings: ISettingsManager
|
||||
) : ViewModel() {
|
||||
|
||||
val entriesTotal = repository.getEntriesTotal().asLiveData()
|
||||
@@ -79,17 +79,17 @@ class SettingsViewModel @Inject constructor(
|
||||
|
||||
fun setUpdateHandled() = repository.setUpdateStateHandled()
|
||||
|
||||
val stationPosition: SharedFlow<DataState<GeoPos>> = locationHandler.stationPosition
|
||||
val stationPosition: SharedFlow<DataState<GeoPos>> = locationManager.stationPosition
|
||||
|
||||
fun getStationPosition(): GeoPos = locationHandler.getStationPosition()
|
||||
fun getStationPosition(): GeoPos = locationManager.getStationPosition()
|
||||
|
||||
fun setStationPosition(lat: Double, lon: Double) = locationHandler.setStationPosition(lat, lon)
|
||||
fun setStationPosition(lat: Double, lon: Double) = locationManager.setStationPosition(lat, lon)
|
||||
|
||||
fun setPositionFromGps() = locationHandler.setPositionFromGps()
|
||||
fun setPositionFromGps() = locationManager.setPositionFromGps()
|
||||
|
||||
fun setPositionFromNet() = locationHandler.setPositionFromNet()
|
||||
fun setPositionFromNet() = locationManager.setPositionFromNet()
|
||||
|
||||
fun setPositionFromQth(qthString: String) = locationHandler.setPositionFromQth(qthString)
|
||||
fun setPositionFromQth(qthString: String) = locationManager.setPositionFromQth(qthString)
|
||||
|
||||
fun setPositionHandled() = locationHandler.setPositionHandled()
|
||||
fun setPositionHandled() = locationManager.setPositionHandled()
|
||||
}
|
||||
+2
-2
@@ -27,7 +27,7 @@ import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.databinding.DialogSourcesBinding
|
||||
import com.rtbishop.look4sat.domain.ISettings
|
||||
import com.rtbishop.look4sat.domain.ISettingsManager
|
||||
import com.rtbishop.look4sat.framework.model.DataSource
|
||||
import com.rtbishop.look4sat.presentation.setNavResult
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
@@ -37,7 +37,7 @@ import javax.inject.Inject
|
||||
class SourcesDialog : AppCompatDialogFragment(), SourcesAdapter.SourcesClickListener {
|
||||
|
||||
@Inject
|
||||
lateinit var settings: ISettings
|
||||
lateinit var settings: ISettingsManager
|
||||
private lateinit var binding: DialogSourcesBinding
|
||||
private lateinit var sourcesAdapter: SourcesAdapter
|
||||
|
||||
|
||||
Reference in new issue
Block a user