diff --git a/app/build.gradle b/app/build.gradle
index 870d50d7..f58f70ec 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -24,8 +24,12 @@ android {
}
}
+// def props = new Properties()
+// file("../securityKeys.properties").withInputStream { props.load(it) }
+
buildTypes {
release {
+// buildConfigField "String", "ApiKey", props.getProperty("apiKey")
// minifyEnabled true
// shrinkResources true
// proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
diff --git a/app/schemas/com.rtbishop.look4sat.framework.db.SatelliteDb/2.json b/app/schemas/com.rtbishop.look4sat.framework.local.SatelliteDb/2.json
similarity index 100%
rename from app/schemas/com.rtbishop.look4sat.framework.db.SatelliteDb/2.json
rename to app/schemas/com.rtbishop.look4sat.framework.local.SatelliteDb/2.json
diff --git a/app/src/main/java/com/rtbishop/look4sat/utility/DataMapper.kt b/app/src/main/java/com/rtbishop/look4sat/framework/DataMapper.kt
similarity index 91%
rename from app/src/main/java/com/rtbishop/look4sat/utility/DataMapper.kt
rename to app/src/main/java/com/rtbishop/look4sat/framework/DataMapper.kt
index e6ef0648..969c3531 100644
--- a/app/src/main/java/com/rtbishop/look4sat/utility/DataMapper.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/framework/DataMapper.kt
@@ -15,18 +15,18 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.utility
+package com.rtbishop.look4sat.framework
import com.rtbishop.look4sat.framework.model.SatEntry
import com.rtbishop.look4sat.framework.model.SatItem
import com.rtbishop.look4sat.framework.model.Transmitter
-import com.rtbishop.look4sat.data.SatEntry as DomainEntry
-import com.rtbishop.look4sat.data.SatItem as DomainItem
-import com.rtbishop.look4sat.domain.Transmitter as DomainTrans
+import com.rtbishop.look4sat.model.SatEntry as DomainEntry
+import com.rtbishop.look4sat.model.SatItem as DomainItem
+import com.rtbishop.look4sat.model.Transmitter as DomainTrans
object DataMapper {
- // Framework to Domain
+ // Presentation to Domain
fun satEntryToDomainEntry(entry: SatEntry): DomainEntry {
return DomainEntry(entry.tle, entry.catNum, entry.name, entry.isSelected)
@@ -55,7 +55,7 @@ object DataMapper {
return transmitters.map { transmitter -> satTransToDomainTrans(transmitter) }
}
- // Domain to Framework
+ // Domain to Presentation
fun domainEntryToSatEntry(entry: DomainEntry): SatEntry {
return SatEntry(entry.tle, entry.catNum, entry.name, entry.isSelected)
diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/PreferencesSource.kt b/app/src/main/java/com/rtbishop/look4sat/framework/PreferencesSource.kt
index b8627896..323eda69 100644
--- a/app/src/main/java/com/rtbishop/look4sat/framework/PreferencesSource.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/framework/PreferencesSource.kt
@@ -21,8 +21,8 @@ import android.content.SharedPreferences
import android.hardware.GeomagneticField
import android.location.LocationManager
import androidx.core.content.edit
-import com.rtbishop.look4sat.data.Preferences
-import com.rtbishop.look4sat.domain.GeoPos
+import com.rtbishop.look4sat.common.Constants
+import com.rtbishop.look4sat.predict4kotlin.GeoPos
import com.rtbishop.look4sat.domain.QthConverter
import com.rtbishop.look4sat.utility.round
import com.squareup.moshi.Moshi
@@ -33,12 +33,12 @@ class PreferencesSource @Inject constructor(
moshi: Moshi,
private val locationManager: LocationManager,
private val preferences: SharedPreferences
-) : Preferences {
+) {
private val sourcesType = Types.newParameterizedType(List::class.java, String::class.java)
private val sourcesAdapter = moshi.adapter>(sourcesType)
- override fun loadTleSources(): List {
+ fun loadTleSources(): List {
return try {
val sourcesString = preferences.getString(keySources, String())
if (sourcesString.isNullOrEmpty()) {
@@ -51,17 +51,15 @@ class PreferencesSource @Inject constructor(
}
}
- override fun saveTleSources(sources: List) {
+ fun saveTleSources(sources: List) {
val sourcesJson = sourcesAdapter.toJson(sources)
preferences.edit { putString(keySources, sourcesJson) }
}
- override fun loadDefaultSources(): List {
+ fun loadDefaultSources(): List {
return listOf(
- "https://celestrak.com/NORAD/elements/active.txt",
- "https://amsat.org/tle/current/nasabare.txt",
- "https://www.prismnet.com/~mmccants/tles/classfd.zip",
- "https://www.prismnet.com/~mmccants/tles/inttles.zip"
+ Constants.URL_CELESTRAK, Constants.URL_AMSAT,
+ Constants.URL_PRISM_CLASSFD, Constants.URL_PRISM_INTEL
)
}
@@ -85,11 +83,11 @@ class PreferencesSource @Inject constructor(
const val keyPositionQTH = "setPositionQTH"
}
- override fun positionToQTH(lat: Double, lon: Double): String? {
+ fun positionToQTH(lat: Double, lon: Double): String? {
return QthConverter.positionToQTH(lat, lon)
}
- override fun loadStationPosition(): GeoPos {
+ fun loadStationPosition(): GeoPos {
val defaultSP = "0.0"
val latitude = preferences.getString(keyLatitude, null) ?: defaultSP
val longitude = preferences.getString(keyLongitude, null) ?: defaultSP
@@ -97,7 +95,7 @@ class PreferencesSource @Inject constructor(
return GeoPos(latitude.toDouble(), longitude.toDouble(), altitude.toDouble())
}
- override fun saveStationPosition(pos: GeoPos) {
+ fun saveStationPosition(pos: GeoPos) {
preferences.edit {
putString(keyLatitude, pos.latitude.toString())
putString(keyLongitude, pos.longitude.toString())
@@ -105,7 +103,7 @@ class PreferencesSource @Inject constructor(
}
}
- override fun updatePositionFromGPS(): Boolean {
+ fun updatePositionFromGPS(): Boolean {
return try {
val location = locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER)
if (location == null) false
@@ -122,14 +120,14 @@ class PreferencesSource @Inject constructor(
}
}
- override fun updatePositionFromQTH(qthString: String): Boolean {
+ fun updatePositionFromQTH(qthString: String): Boolean {
val position = QthConverter.qthToPosition(qthString) ?: return false
val stationPosition = GeoPos(position.latitude, position.longitude, 0.0)
saveStationPosition(stationPosition)
return true
}
- override fun getMagDeclination(): Float {
+ fun getMagDeclination(): Float {
val stationPosition = loadStationPosition()
val lat = stationPosition.latitude.toFloat()
val lon = stationPosition.longitude.toFloat()
@@ -137,56 +135,60 @@ class PreferencesSource @Inject constructor(
return GeomagneticField(lat, lon, alt, System.currentTimeMillis()).declination
}
- override fun getHoursAhead(): Int {
+ fun getHoursAhead(): Int {
return preferences.getInt(keyHoursAhead, 8)
}
- override fun getMinElevation(): Double {
+ fun getMinElevation(): Double {
return preferences.getInt(keyMinElevation, 16).toDouble()
}
- override fun shouldUseTextLabels(): Boolean {
+ fun shouldUseTextLabels(): Boolean {
return preferences.getBoolean(keyTextLabels, false)
}
- override fun shouldUseUTC(): Boolean {
+ fun shouldUseUTC(): Boolean {
return preferences.getBoolean(keyTimeUTC, false)
}
- override fun shouldUseCompass(): Boolean {
+ fun shouldUseCompass(): Boolean {
return preferences.getBoolean(keyCompass, true)
}
- override fun shouldShowSweep(): Boolean {
+ fun shouldShowSweep(): Boolean {
return preferences.getBoolean(keyRadarSweep, true)
}
- override fun isSetupDone(): Boolean {
+ fun isSetupDone(): Boolean {
return preferences.getBoolean(keyInitialSetup, false)
}
- override fun setSetupDone() {
+ fun setSetupDone() {
preferences.edit { putBoolean(keyInitialSetup, true) }
}
- override fun saveModesSelection(modes: List) {
+ fun saveModesSelection(modes: List) {
val modesSet = modes.toSet()
preferences.edit {
putStringSet(keyModes, modesSet)
}
}
- override fun loadModesSelection(): List {
+ fun loadModesSelection(): List {
preferences.getStringSet(keyModes, setOf())?.let { modesSet ->
return modesSet.toList().sorted()
}
return emptyList()
}
- override fun getRotatorServer(): Pair? {
- return if (preferences.getBoolean(keyRotator, false)) {
+ fun isRotatorEnabled(): Boolean {
+ return preferences.getBoolean(keyRotator, false)
+ }
+
+ fun getRotatorServer(): Pair? {
+ return if (isRotatorEnabled()) {
val address = preferences.getString(keyRotatorAddress, null) ?: "127.0.0.1"
- val port = preferences.getString(keyRotatorPort, null) ?: "4096"
+ val port = preferences.getString(keyRotatorPort, null) ?: "4533"
Pair(address, port.toInt())
} else null
}
diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/db/RoomConverters.kt b/app/src/main/java/com/rtbishop/look4sat/framework/local/Converters.kt
similarity index 89%
rename from app/src/main/java/com/rtbishop/look4sat/framework/db/RoomConverters.kt
rename to app/src/main/java/com/rtbishop/look4sat/framework/local/Converters.kt
index f9da541b..8a1077c2 100644
--- a/app/src/main/java/com/rtbishop/look4sat/framework/db/RoomConverters.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/framework/local/Converters.kt
@@ -15,15 +15,15 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.framework.db
+package com.rtbishop.look4sat.framework.local
import androidx.room.TypeConverter
-import com.rtbishop.look4sat.domain.Satellite
-import com.rtbishop.look4sat.domain.TLE
+import com.rtbishop.look4sat.predict4kotlin.Satellite
+import com.rtbishop.look4sat.predict4kotlin.TLE
import com.squareup.moshi.JsonAdapter
import com.squareup.moshi.Moshi
-object RoomConverters {
+object Converters {
private lateinit var paramsAdapter: JsonAdapter
diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/db/LocalDataSource.kt b/app/src/main/java/com/rtbishop/look4sat/framework/local/LocalSource.kt
similarity index 82%
rename from app/src/main/java/com/rtbishop/look4sat/framework/db/LocalDataSource.kt
rename to app/src/main/java/com/rtbishop/look4sat/framework/local/LocalSource.kt
index b52ccfb7..0e915b51 100644
--- a/app/src/main/java/com/rtbishop/look4sat/framework/db/LocalDataSource.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/framework/local/LocalSource.kt
@@ -15,18 +15,18 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.framework.db
+package com.rtbishop.look4sat.framework.local
-import com.rtbishop.look4sat.data.LocalSource
-import com.rtbishop.look4sat.data.SatEntry
-import com.rtbishop.look4sat.data.SatItem
-import com.rtbishop.look4sat.domain.Satellite
-import com.rtbishop.look4sat.domain.Transmitter
-import com.rtbishop.look4sat.utility.DataMapper
+import com.rtbishop.look4sat.data.LocalDataSource
+import com.rtbishop.look4sat.model.SatEntry
+import com.rtbishop.look4sat.model.SatItem
+import com.rtbishop.look4sat.predict4kotlin.Satellite
+import com.rtbishop.look4sat.model.Transmitter
+import com.rtbishop.look4sat.framework.DataMapper
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
-class LocalDataSource(private val satelliteDao: SatelliteDao) : LocalSource {
+class LocalSource(private val satelliteDao: SatelliteDao) : LocalDataSource {
override fun getEntriesWithModes(): Flow> {
return satelliteDao.getSatItems()
diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/db/SatelliteDao.kt b/app/src/main/java/com/rtbishop/look4sat/framework/local/SatelliteDao.kt
similarity index 96%
rename from app/src/main/java/com/rtbishop/look4sat/framework/db/SatelliteDao.kt
rename to app/src/main/java/com/rtbishop/look4sat/framework/local/SatelliteDao.kt
index d579b18e..71e2a9dc 100644
--- a/app/src/main/java/com/rtbishop/look4sat/framework/db/SatelliteDao.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/framework/local/SatelliteDao.kt
@@ -15,13 +15,13 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.framework.db
+package com.rtbishop.look4sat.framework.local
import androidx.room.*
import com.rtbishop.look4sat.framework.model.SatEntry
import com.rtbishop.look4sat.framework.model.SatItem
import com.rtbishop.look4sat.framework.model.Transmitter
-import com.rtbishop.look4sat.domain.Satellite
+import com.rtbishop.look4sat.predict4kotlin.Satellite
import kotlinx.coroutines.flow.Flow
@Dao
diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/db/SatelliteDb.kt b/app/src/main/java/com/rtbishop/look4sat/framework/local/SatelliteDb.kt
similarity index 95%
rename from app/src/main/java/com/rtbishop/look4sat/framework/db/SatelliteDb.kt
rename to app/src/main/java/com/rtbishop/look4sat/framework/local/SatelliteDb.kt
index e543313d..bc08e8bd 100644
--- a/app/src/main/java/com/rtbishop/look4sat/framework/db/SatelliteDb.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/framework/local/SatelliteDb.kt
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.framework.db
+package com.rtbishop.look4sat.framework.local
import androidx.room.Database
import androidx.room.RoomDatabase
@@ -26,7 +26,7 @@ import com.rtbishop.look4sat.framework.model.SatEntry
import com.rtbishop.look4sat.framework.model.Transmitter
@Database(entities = [SatEntry::class, Transmitter::class], version = 2, exportSchema = true)
-@TypeConverters(RoomConverters::class)
+@TypeConverters(Converters::class)
abstract class SatelliteDb : RoomDatabase() {
abstract fun satelliteDao(): SatelliteDao
diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/model/OMM.kt b/app/src/main/java/com/rtbishop/look4sat/framework/model/OMM.kt
deleted file mode 100644
index 468db128..00000000
--- a/app/src/main/java/com/rtbishop/look4sat/framework/model/OMM.kt
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Look4Sat. Amateur radio satellite tracker and pass predictor.
- * Copyright (C) 2019-2021 Arty Bishop (bishop.arty@gmail.com)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.rtbishop.look4sat.framework.model
-
-import com.squareup.moshi.Json
-
-data class OMM(
- @field:Json(name = "OBJECT_NAME") val name: String,
- @field:Json(name = "EPOCH") val epochString: String,
- @field:Json(name = "MEAN_MOTION") val meanmo: Double,
- @field:Json(name = "ECCENTRICITY") val eccn: Double,
- @field:Json(name = "INCLINATION") val incl: Double,
- @field:Json(name = "RA_OF_ASC_NODE") val raan: Double,
- @field:Json(name = "ARG_OF_PERICENTER") val argper: Double,
- @field:Json(name = "MEAN_ANOMALY") val meanan: Double,
- @field:Json(name = "NORAD_CAT_ID") val catnum: Int,
- @field:Json(name = "BSTAR") val bstar: Double,
-)
diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/model/SatEntry.kt b/app/src/main/java/com/rtbishop/look4sat/framework/model/SatEntry.kt
index 272c8048..4d7aec2a 100644
--- a/app/src/main/java/com/rtbishop/look4sat/framework/model/SatEntry.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/framework/model/SatEntry.kt
@@ -19,7 +19,7 @@ package com.rtbishop.look4sat.framework.model
import androidx.room.Entity
import androidx.room.PrimaryKey
-import com.rtbishop.look4sat.domain.TLE
+import com.rtbishop.look4sat.predict4kotlin.TLE
@Entity(tableName = "entries")
data class SatEntry(
diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/api/RemoteDataSource.kt b/app/src/main/java/com/rtbishop/look4sat/framework/remote/RemoteSource.kt
similarity index 80%
rename from app/src/main/java/com/rtbishop/look4sat/framework/api/RemoteDataSource.kt
rename to app/src/main/java/com/rtbishop/look4sat/framework/remote/RemoteSource.kt
index 724c12ca..46efa2cb 100644
--- a/app/src/main/java/com/rtbishop/look4sat/framework/api/RemoteDataSource.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/framework/remote/RemoteSource.kt
@@ -15,14 +15,14 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.framework.api
+package com.rtbishop.look4sat.framework.remote
-import com.rtbishop.look4sat.data.RemoteSource
-import com.rtbishop.look4sat.domain.Transmitter
-import com.rtbishop.look4sat.utility.DataMapper
+import com.rtbishop.look4sat.data.RemoteDataSource
+import com.rtbishop.look4sat.model.Transmitter
+import com.rtbishop.look4sat.framework.DataMapper
import java.io.InputStream
-class RemoteDataSource(private val satelliteApi: SatelliteApi) : RemoteSource {
+class RemoteSource(private val satelliteApi: SatelliteApi) : RemoteDataSource {
override suspend fun fetchFileStream(url: String): InputStream? {
return satelliteApi.fetchFileStream(url).body()?.byteStream()
diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/api/SatelliteApi.kt b/app/src/main/java/com/rtbishop/look4sat/framework/remote/SatelliteApi.kt
similarity index 96%
rename from app/src/main/java/com/rtbishop/look4sat/framework/api/SatelliteApi.kt
rename to app/src/main/java/com/rtbishop/look4sat/framework/remote/SatelliteApi.kt
index 3781f117..c829b4f0 100644
--- a/app/src/main/java/com/rtbishop/look4sat/framework/api/SatelliteApi.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/framework/remote/SatelliteApi.kt
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.framework.api
+package com.rtbishop.look4sat.framework.remote
import com.rtbishop.look4sat.framework.model.Transmitter
import okhttp3.ResponseBody
diff --git a/app/src/main/java/com/rtbishop/look4sat/injection/ThreadsModule.kt b/app/src/main/java/com/rtbishop/look4sat/injection/CoroutinesModule.kt
similarity index 100%
rename from app/src/main/java/com/rtbishop/look4sat/injection/ThreadsModule.kt
rename to app/src/main/java/com/rtbishop/look4sat/injection/CoroutinesModule.kt
diff --git a/app/src/main/java/com/rtbishop/look4sat/injection/DataModule.kt b/app/src/main/java/com/rtbishop/look4sat/injection/Look4SatModule.kt
similarity index 75%
rename from app/src/main/java/com/rtbishop/look4sat/injection/DataModule.kt
rename to app/src/main/java/com/rtbishop/look4sat/injection/Look4SatModule.kt
index 22d634c9..b8d6568b 100644
--- a/app/src/main/java/com/rtbishop/look4sat/injection/DataModule.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/injection/Look4SatModule.kt
@@ -21,16 +21,17 @@ import android.content.Context
import android.content.SharedPreferences
import android.location.LocationManager
import androidx.room.Room
-import com.rtbishop.look4sat.data.LocalSource
-import com.rtbishop.look4sat.data.Preferences
-import com.rtbishop.look4sat.data.RemoteSource
-import com.rtbishop.look4sat.data.SatelliteRepo
-import com.rtbishop.look4sat.domain.PassReporter
-import com.rtbishop.look4sat.domain.Predictor
+import com.rtbishop.look4sat.data.LocalDataSource
+import com.rtbishop.look4sat.data.RemoteDataSource
+import com.rtbishop.look4sat.data.DataRepository
+import com.rtbishop.look4sat.framework.remote.SatelliteApi
+import com.rtbishop.look4sat.common.Constants
+import com.rtbishop.look4sat.domain.Repository
import com.rtbishop.look4sat.framework.PreferencesSource
-import com.rtbishop.look4sat.framework.api.RemoteDataSource
-import com.rtbishop.look4sat.framework.api.SatelliteApi
-import com.rtbishop.look4sat.framework.db.*
+import com.rtbishop.look4sat.domain.DataReporter
+import com.rtbishop.look4sat.predict4kotlin.Predictor
+import com.rtbishop.look4sat.framework.remote.RemoteSource
+import com.rtbishop.look4sat.framework.local.*
import com.squareup.moshi.Moshi
import dagger.Module
import dagger.Provides
@@ -44,7 +45,7 @@ import javax.inject.Singleton
@Module
@InstallIn(SingletonComponent::class)
-object DataModule {
+object Look4SatModule {
@Provides
@Singleton
@@ -58,7 +59,7 @@ object DataModule {
moshi: Moshi,
locationManager: LocationManager,
preferences: SharedPreferences
- ): Preferences {
+ ): PreferencesSource {
return PreferencesSource(moshi, locationManager, preferences)
}
@@ -71,17 +72,16 @@ object DataModule {
@Provides
@Singleton
fun provideSatelliteRepo(
- preferences: Preferences,
- localSource: LocalSource,
- remoteSource: RemoteSource,
+ localSource: LocalDataSource,
+ remoteSource: RemoteDataSource,
@IoDispatcher dispatcher: CoroutineDispatcher
- ): SatelliteRepo {
- return SatelliteRepo(preferences, localSource, remoteSource, dispatcher)
+ ): Repository {
+ return DataRepository(localSource, remoteSource, dispatcher)
}
@Provides
- fun provideLocalDataSource(satelliteDao: SatelliteDao): LocalSource {
- return LocalDataSource(satelliteDao)
+ fun provideLocalDataSource(satelliteDao: SatelliteDao): LocalDataSource {
+ return LocalSource(satelliteDao)
}
@Provides
@@ -93,29 +93,29 @@ object DataModule {
@Provides
@Singleton
fun provideSatelliteDb(@ApplicationContext context: Context, moshi: Moshi): SatelliteDb {
- RoomConverters.initialize(moshi)
+ Converters.initialize(moshi)
return Room.databaseBuilder(context, SatelliteDb::class.java, "SatelliteDb")
.addMigrations(MIGRATION_1_2).build()
}
@Provides
@Singleton
- fun provideRemoteDataSource(satelliteApi: SatelliteApi): RemoteSource {
- return RemoteDataSource(satelliteApi)
+ fun provideRemoteDataSource(satelliteApi: SatelliteApi): RemoteDataSource {
+ return RemoteSource(satelliteApi)
}
@Provides
@Singleton
fun provideSatelliteService(): SatelliteApi {
return Retrofit.Builder()
- .baseUrl("https://db.satnogs.org/api/")
+ .baseUrl(Constants.URL_BASE)
.addConverterFactory(MoshiConverterFactory.create())
.build().create(SatelliteApi::class.java)
}
@Provides
@Singleton
- fun provideDataReporter(@IoDispatcher dispatcher: CoroutineDispatcher): PassReporter {
- return PassReporter(dispatcher)
+ fun provideDataReporter(@IoDispatcher dispatcher: CoroutineDispatcher): DataReporter {
+ return DataReporter(dispatcher)
}
}
diff --git a/app/src/main/java/com/rtbishop/look4sat/utility/Extensions.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/Extensions.kt
similarity index 100%
rename from app/src/main/java/com/rtbishop/look4sat/utility/Extensions.kt
rename to app/src/main/java/com/rtbishop/look4sat/presentation/Extensions.kt
diff --git a/app/src/main/java/com/rtbishop/look4sat/utility/RecyclerDivider.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/ItemDivider.kt
similarity index 93%
rename from app/src/main/java/com/rtbishop/look4sat/utility/RecyclerDivider.kt
rename to app/src/main/java/com/rtbishop/look4sat/presentation/ItemDivider.kt
index 206a2992..1a441e04 100644
--- a/app/src/main/java/com/rtbishop/look4sat/utility/RecyclerDivider.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/ItemDivider.kt
@@ -15,13 +15,13 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.utility
+package com.rtbishop.look4sat.presentation
import android.graphics.Canvas
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
-class RecyclerDivider(private val resId: Int) : RecyclerView.ItemDecoration() {
+class ItemDivider(private val resId: Int) : RecyclerView.ItemDecoration() {
override fun onDrawOver(canvas: Canvas, parent: RecyclerView) {
ContextCompat.getDrawable(parent.context, resId)?.let { drawable ->
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesAdapter.kt
index 0304a840..8fe5e4d3 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesAdapter.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesAdapter.kt
@@ -22,10 +22,11 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.AsyncListDiffer
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.RecyclerView
-import com.rtbishop.look4sat.data.SatItem
+import com.rtbishop.look4sat.model.SatItem
import com.rtbishop.look4sat.databinding.ItemEntryBinding
-class EntriesAdapter : RecyclerView.Adapter() {
+class EntriesAdapter(private val clickListener: EntriesClickListener) :
+ RecyclerView.Adapter() {
private val diffCallback = object : DiffUtil.ItemCallback() {
override fun areItemsTheSame(oldItem: SatItem, newItem: SatItem): Boolean {
@@ -37,15 +38,6 @@ class EntriesAdapter : RecyclerView.Adapter() {
}
}
private val differ = AsyncListDiffer(this, diffCallback)
- private lateinit var clickListener: EntriesClickListener
-
- interface EntriesClickListener {
- fun updateSelection(catNums: List, isSelected: Boolean)
- }
-
- fun setEntriesClickListener(listener: EntriesClickListener) {
- clickListener = listener
- }
fun submitList(items: List) {
differ.submitList(items)
@@ -79,4 +71,8 @@ class EntriesAdapter : RecyclerView.Adapter() {
}
}
}
+
+ interface EntriesClickListener {
+ fun updateSelection(catNums: List, isSelected: Boolean)
+ }
}
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesFragment.kt
index 3a3c87b2..a53e721f 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesFragment.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesFragment.kt
@@ -27,10 +27,10 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.SimpleItemAnimator
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.rtbishop.look4sat.R
-import com.rtbishop.look4sat.data.SatItem
+import com.rtbishop.look4sat.model.SatItem
import com.rtbishop.look4sat.databinding.FragmentEntriesBinding
-import com.rtbishop.look4sat.framework.model.DataState
-import com.rtbishop.look4sat.utility.RecyclerDivider
+import com.rtbishop.look4sat.common.DataState
+import com.rtbishop.look4sat.presentation.ItemDivider
import com.rtbishop.look4sat.utility.getNavResult
import com.rtbishop.look4sat.utility.navigateSafe
import com.rtbishop.look4sat.utility.showSnack
@@ -51,16 +51,18 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) {
}
private fun setupComponents(view: View) {
- val entriesAdapter = EntriesAdapter().apply {
- setEntriesClickListener(viewModel)
- }
+ val entriesAdapter = EntriesAdapter(object: EntriesAdapter.EntriesClickListener {
+ override fun updateSelection(catNums: List, isSelected: Boolean) {
+ viewModel.updateSelection(catNums, isSelected)
+ }
+ })
val binding = FragmentEntriesBinding.bind(view).apply {
entriesRecycler.apply {
setHasFixedSize(true)
adapter = entriesAdapter
layoutManager = LinearLayoutManager(requireContext())
(itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false
- addItemDecoration(RecyclerDivider(R.drawable.rec_divider_light))
+ addItemDecoration(ItemDivider(R.drawable.rec_divider_light))
}
entriesImportWeb.setOnClickListener {
findNavController().navigateSafe(R.id.action_entries_to_sources)
@@ -98,6 +100,8 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) {
binding.entriesRecycler.visibility = View.VISIBLE
requireView().showSnack(getString(R.string.entries_update_error))
}
+ else -> {
+ }
}
}
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesViewModel.kt
index b56b291a..f28d5f15 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesViewModel.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesViewModel.kt
@@ -21,10 +21,10 @@ import android.content.ContentResolver
import android.net.Uri
import android.widget.SearchView
import androidx.lifecycle.*
-import com.rtbishop.look4sat.data.Preferences
-import com.rtbishop.look4sat.data.SatelliteRepo
-import com.rtbishop.look4sat.data.SatItem
-import com.rtbishop.look4sat.framework.model.DataState
+import com.rtbishop.look4sat.model.SatItem
+import com.rtbishop.look4sat.common.DataState
+import com.rtbishop.look4sat.domain.Repository
+import com.rtbishop.look4sat.framework.PreferencesSource
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.CoroutineExceptionHandler
import kotlinx.coroutines.flow.collect
@@ -35,16 +35,16 @@ import javax.inject.Inject
@HiltViewModel
class EntriesViewModel @Inject constructor(
- private val preferences: Preferences,
+ private val preferences: PreferencesSource,
private val resolver: ContentResolver,
- private val satelliteRepo: SatelliteRepo,
-) : ViewModel(), EntriesAdapter.EntriesClickListener, SearchView.OnQueryTextListener {
+ private val satelliteRepo: Repository,
+) : ViewModel(), SearchView.OnQueryTextListener {
private val coroutineHandler = CoroutineExceptionHandler { _, throwable ->
Timber.d(throwable)
_satData.value = DataState.Error(throwable)
}
- private val transModes = MutableLiveData(satelliteRepo.loadSelectedModes())
+ private val transModes = MutableLiveData(preferences.loadModesSelection())
private val currentQuery = MutableLiveData(String())
private val itemsWithModes = transModes.switchMap { modes ->
liveData { satelliteRepo.getSatItems().collect { emit(filterByModes(it, modes)) } }
@@ -86,12 +86,12 @@ class EntriesViewModel @Inject constructor(
}
fun loadSelectedModes(): List {
- return satelliteRepo.loadSelectedModes()
+ return preferences.loadModesSelection()
}
fun saveSelectedModes(modes: List) {
transModes.value = modes
- satelliteRepo.saveSelectedModes(modes)
+ preferences.saveModesSelection(modes)
}
override fun onQueryTextSubmit(query: String): Boolean {
@@ -103,7 +103,7 @@ class EntriesViewModel @Inject constructor(
return true
}
- override fun updateSelection(catNums: List, isSelected: Boolean) {
+ fun updateSelection(catNums: List, isSelected: Boolean) {
viewModelScope.launch { satelliteRepo.updateEntriesSelection(catNums, isSelected) }
}
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapData.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapData.kt
index 92c8dc11..aef324f5 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapData.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapData.kt
@@ -17,8 +17,8 @@
*/
package com.rtbishop.look4sat.presentation.mapScreen
-import com.rtbishop.look4sat.domain.GeoPos
-import com.rtbishop.look4sat.domain.Satellite
+import com.rtbishop.look4sat.predict4kotlin.GeoPos
+import com.rtbishop.look4sat.predict4kotlin.Satellite
data class MapData(
val pass: Satellite,
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapFragment.kt
index 93ca4e2e..ec97c2ef 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapFragment.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapFragment.kt
@@ -29,8 +29,8 @@ import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.databinding.FragmentMapBinding
-import com.rtbishop.look4sat.domain.GeoPos
-import com.rtbishop.look4sat.domain.Satellite
+import com.rtbishop.look4sat.predict4kotlin.GeoPos
+import com.rtbishop.look4sat.predict4kotlin.Satellite
import dagger.hilt.android.AndroidEntryPoint
import org.osmdroid.config.Configuration
import org.osmdroid.tileprovider.tilesource.TileSourceFactory
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapViewModel.kt
index d69f80f0..81f4f45f 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapViewModel.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapViewModel.kt
@@ -18,10 +18,12 @@
package com.rtbishop.look4sat.presentation.mapScreen
import androidx.lifecycle.*
-import com.rtbishop.look4sat.domain.Predictor
-import com.rtbishop.look4sat.data.Preferences
-import com.rtbishop.look4sat.data.SatelliteRepo
-import com.rtbishop.look4sat.domain.*
+import com.rtbishop.look4sat.predict4kotlin.Predictor
+import com.rtbishop.look4sat.domain.Repository
+import com.rtbishop.look4sat.framework.PreferencesSource
+import com.rtbishop.look4sat.predict4kotlin.GeoPos
+import com.rtbishop.look4sat.domain.QthConverter
+import com.rtbishop.look4sat.predict4kotlin.Satellite
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.*
import java.util.*
@@ -31,9 +33,9 @@ import kotlin.math.min
@HiltViewModel
class MapViewModel @Inject constructor(
- private val satelliteRepo: SatelliteRepo,
+ private val satelliteRepo: Repository,
private val predictor: Predictor,
- private val preferences: Preferences,
+ private val preferences: PreferencesSource,
) : ViewModel() {
private val stationPos = preferences.loadStationPosition()
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesAdapter.kt
index 95f169bd..2c08d42f 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesAdapter.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesAdapter.kt
@@ -25,7 +25,7 @@ import androidx.recyclerview.widget.RecyclerView
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.databinding.ItemPassGeoBinding
import com.rtbishop.look4sat.databinding.ItemPassLeoBinding
-import com.rtbishop.look4sat.domain.SatPass
+import com.rtbishop.look4sat.predict4kotlin.SatPass
import java.text.SimpleDateFormat
import java.util.*
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesFragment.kt
index ae02f7d0..651c85a0 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesFragment.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesFragment.kt
@@ -29,9 +29,9 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.SimpleItemAnimator
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.databinding.FragmentPassesBinding
-import com.rtbishop.look4sat.domain.SatPass
-import com.rtbishop.look4sat.framework.model.DataState
-import com.rtbishop.look4sat.utility.RecyclerDivider
+import com.rtbishop.look4sat.predict4kotlin.SatPass
+import com.rtbishop.look4sat.common.DataState
+import com.rtbishop.look4sat.presentation.ItemDivider
import com.rtbishop.look4sat.utility.navigateSafe
import com.rtbishop.look4sat.utility.toTimerString
import dagger.hilt.android.AndroidEntryPoint
@@ -60,7 +60,7 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC
isVerticalScrollBarEnabled = false
layoutManager = LinearLayoutManager(context)
(itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false
- addItemDecoration(RecyclerDivider(R.drawable.rec_divider_dark))
+ addItemDecoration(ItemDivider(R.drawable.rec_divider_dark))
}
passesRefresh.setOnClickListener { passesViewModel.forceCalculation() }
}
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt
index 8ab74768..17969d4b 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt
@@ -21,11 +21,11 @@ import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.rtbishop.look4sat.data.Preferences
-import com.rtbishop.look4sat.data.SatelliteRepo
-import com.rtbishop.look4sat.domain.Predictor
-import com.rtbishop.look4sat.domain.SatPass
-import com.rtbishop.look4sat.framework.model.DataState
+import com.rtbishop.look4sat.predict4kotlin.Predictor
+import com.rtbishop.look4sat.predict4kotlin.SatPass
+import com.rtbishop.look4sat.common.DataState
+import com.rtbishop.look4sat.domain.Repository
+import com.rtbishop.look4sat.framework.PreferencesSource
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.*
import kotlinx.coroutines.flow.collect
@@ -34,9 +34,9 @@ import javax.inject.Inject
@HiltViewModel
class PassesViewModel @Inject constructor(
- private val satelliteRepo: SatelliteRepo,
+ private val satelliteRepo: Repository,
private val predictor: Predictor,
- private val preferences: Preferences
+ private val preferences: PreferencesSource
) : ViewModel() {
private val _passes = MutableLiveData>>(DataState.Loading)
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarData.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarData.kt
index 93341801..8a0946bc 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarData.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarData.kt
@@ -1,5 +1,22 @@
+/*
+ * Look4Sat. Amateur radio satellite tracker and pass predictor.
+ * Copyright (C) 2019-2021 Arty Bishop (bishop.arty@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
package com.rtbishop.look4sat.presentation.radarScreen
-import com.rtbishop.look4sat.domain.SatPos
+import com.rtbishop.look4sat.predict4kotlin.SatPos
data class RadarData(val satPos: SatPos, val satTrack: List = emptyList())
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarFragment.kt
index a5e7b4ab..dc6b9627 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarFragment.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarFragment.kt
@@ -25,11 +25,11 @@ import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.SimpleItemAnimator
import com.rtbishop.look4sat.R
-import com.rtbishop.look4sat.data.Preferences
import com.rtbishop.look4sat.databinding.FragmentRadarBinding
-import com.rtbishop.look4sat.domain.SatPass
-import com.rtbishop.look4sat.domain.SatPos
-import com.rtbishop.look4sat.utility.RecyclerDivider
+import com.rtbishop.look4sat.framework.PreferencesSource
+import com.rtbishop.look4sat.predict4kotlin.SatPass
+import com.rtbishop.look4sat.predict4kotlin.SatPos
+import com.rtbishop.look4sat.presentation.ItemDivider
import com.rtbishop.look4sat.utility.navigateSafe
import com.rtbishop.look4sat.utility.toTimerString
import dagger.hilt.android.AndroidEntryPoint
@@ -39,7 +39,7 @@ import javax.inject.Inject
class RadarFragment : Fragment(R.layout.fragment_radar) {
@Inject
- lateinit var preferences: Preferences
+ lateinit var preferences: PreferencesSource
private val viewModel: RadarViewModel by viewModels()
private var radarView: RadarView? = null
@@ -53,7 +53,7 @@ class RadarFragment : Fragment(R.layout.fragment_radar) {
isVerticalScrollBarEnabled = false
layoutManager = LinearLayoutManager(context)
(itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false
- addItemDecoration(RecyclerDivider(R.drawable.rec_divider_dark))
+ addItemDecoration(ItemDivider(R.drawable.rec_divider_dark))
}
setupObservers(transAdapter, this)
}
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarView.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarView.kt
index 273c2be7..576ed258 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarView.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarView.kt
@@ -22,7 +22,7 @@ import android.graphics.*
import android.view.View
import androidx.core.content.ContextCompat
import com.rtbishop.look4sat.R
-import com.rtbishop.look4sat.domain.SatPos
+import com.rtbishop.look4sat.predict4kotlin.SatPos
import kotlin.math.cos
import kotlin.math.min
import kotlin.math.sin
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarViewModel.kt
index 39a13045..38939e51 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarViewModel.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarViewModel.kt
@@ -18,14 +18,14 @@
package com.rtbishop.look4sat.presentation.radarScreen
import androidx.lifecycle.*
-import com.rtbishop.look4sat.domain.PassReporter
-import com.rtbishop.look4sat.data.Preferences
-import com.rtbishop.look4sat.data.SatelliteRepo
-import com.rtbishop.look4sat.domain.Predictor
-import com.rtbishop.look4sat.domain.SatPass
-import com.rtbishop.look4sat.domain.SatPos
-import com.rtbishop.look4sat.domain.Transmitter
+import com.rtbishop.look4sat.domain.DataReporter
+import com.rtbishop.look4sat.domain.Repository
+import com.rtbishop.look4sat.predict4kotlin.Predictor
+import com.rtbishop.look4sat.predict4kotlin.SatPass
+import com.rtbishop.look4sat.predict4kotlin.SatPos
+import com.rtbishop.look4sat.model.Transmitter
import com.rtbishop.look4sat.framework.OrientationSource
+import com.rtbishop.look4sat.framework.PreferencesSource
import com.rtbishop.look4sat.utility.round
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.delay
@@ -38,10 +38,10 @@ import javax.inject.Inject
@HiltViewModel
class RadarViewModel @Inject constructor(
private val orientationSource: OrientationSource,
- private val preferences: Preferences,
+ private val preferences: PreferencesSource,
private val predictor: Predictor,
- private val satelliteRepo: SatelliteRepo,
- private val passReporter: PassReporter
+ private val satelliteRepo: Repository,
+ private val dataReporter: DataReporter
) : ViewModel(), OrientationSource.OrientationListener {
private val stationPos = preferences.loadStationPosition()
@@ -80,7 +80,7 @@ class RadarViewModel @Inject constructor(
var satTrack: List = emptyList()
val rotatorPrefs = preferences.getRotatorServer()
if (rotatorPrefs != null) {
- passReporter.setupRotatorSocket(rotatorPrefs.first, rotatorPrefs.second)
+ dataReporter.setupRotatorSocket(rotatorPrefs.first, rotatorPrefs.second)
}
if (!satPass.isDeepSpace) {
val startDate = Date(satPass.aosTime)
@@ -91,7 +91,7 @@ class RadarViewModel @Inject constructor(
val satPos = predictor.getSatPos(satPass.satellite, stationPos, Date())
val azimuth = Math.toDegrees(satPos.azimuth).round(1)
val elevation = Math.toDegrees(satPos.elevation).round(1)
- passReporter.reportRotation(azimuth, elevation)
+ dataReporter.reportRotation(azimuth, elevation)
_passData.postValue(RadarData(satPos, satTrack))
delay(1000)
}
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/TransmittersAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/TransmittersAdapter.kt
index 53702f73..8d69c5a6 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/TransmittersAdapter.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/TransmittersAdapter.kt
@@ -24,7 +24,7 @@ import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.RecyclerView
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.databinding.ItemTransBinding
-import com.rtbishop.look4sat.domain.Transmitter
+import com.rtbishop.look4sat.model.Transmitter
import java.util.*
class TransmittersAdapter : RecyclerView.Adapter() {
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/SettingsFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/SettingsFragment.kt
index 8cd878a9..1634469b 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/SettingsFragment.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/SettingsFragment.kt
@@ -29,7 +29,6 @@ import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import com.google.android.material.snackbar.Snackbar
import com.rtbishop.look4sat.R
-import com.rtbishop.look4sat.data.Preferences
import com.rtbishop.look4sat.framework.PreferencesSource
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
@@ -38,7 +37,7 @@ import javax.inject.Inject
class SettingsFragment : PreferenceFragmentCompat() {
@Inject
- lateinit var preferences: Preferences
+ lateinit var preferences: PreferencesSource
private val requestPermissionLauncher =
registerForActivityResult(ActivityResultContracts.RequestPermission()) { isGranted ->
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/sourcesScreen/SourcesDialog.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/sourcesScreen/SourcesDialog.kt
index 7ccfd3b0..7f7dede8 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/sourcesScreen/SourcesDialog.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/sourcesScreen/SourcesDialog.kt
@@ -25,8 +25,8 @@ import android.view.WindowManager
import androidx.appcompat.app.AppCompatDialogFragment
import androidx.recyclerview.widget.LinearLayoutManager
import com.rtbishop.look4sat.R
-import com.rtbishop.look4sat.data.Preferences
import com.rtbishop.look4sat.databinding.DialogSourcesBinding
+import com.rtbishop.look4sat.framework.PreferencesSource
import com.rtbishop.look4sat.utility.setNavResult
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
@@ -35,7 +35,7 @@ import javax.inject.Inject
class SourcesDialog : AppCompatDialogFragment() {
@Inject
- lateinit var prefsManager: Preferences
+ lateinit var prefsManager: PreferencesSource
override fun onCreateView(inflater: LayoutInflater, group: ViewGroup?, state: Bundle?): View? {
return inflater.inflate(R.layout.dialog_sources, group, false)
diff --git a/app/src/main/java/com/rtbishop/look4sat/utility/CustomHandler.kt b/app/src/main/java/com/rtbishop/look4sat/utility/CustomHandler.kt
deleted file mode 100644
index 387d09a4..00000000
--- a/app/src/main/java/com/rtbishop/look4sat/utility/CustomHandler.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.rtbishop.look4sat.utility
-
-import android.app.Activity
-
-class CustomHandler(private val activity: Activity) : Thread.UncaughtExceptionHandler {
-
- private val rootHandler = Thread.getDefaultUncaughtExceptionHandler()
-
- init {
- Thread.setDefaultUncaughtExceptionHandler(this)
- }
-
- override fun uncaughtException(thread: Thread, throwable: Throwable) {
-// Custom exception handling, use intents instead of dialogs
-// Process.killProcess(Process.myPid())
-// exitProcess(0)
- }
-}
diff --git a/app/src/main/res/xml/preference.xml b/app/src/main/res/xml/preference.xml
index 66460680..910e472c 100644
--- a/app/src/main/res/xml/preference.xml
+++ b/app/src/main/res/xml/preference.xml
@@ -50,7 +50,7 @@
app:iconSpaceReserved="false"
app:useSimpleSummaryProvider="true" />
.
+ */
+package com.rtbishop.look4sat.common
+
+object Constants {
+
+ const val URL_BASE = "https://db.satnogs.org/api/"
+ const val URL_CELESTRAK = "https://celestrak.com/NORAD/elements/active.txt"
+ const val URL_AMSAT = "https://amsat.org/tle/current/nasabare.txt"
+ const val URL_PRISM_CLASSFD = "https://www.prismnet.com/~mmccants/tles/classfd.zip"
+ const val URL_PRISM_INTEL = "https://www.prismnet.com/~mmccants/tles/inttles.zip"
+
+}
diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/model/DataState.kt b/core/src/main/java/com/rtbishop/look4sat/common/DataState.kt
similarity index 95%
rename from app/src/main/java/com/rtbishop/look4sat/framework/model/DataState.kt
rename to core/src/main/java/com/rtbishop/look4sat/common/DataState.kt
index 07d9d788..d6c00810 100644
--- a/app/src/main/java/com/rtbishop/look4sat/framework/model/DataState.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/common/DataState.kt
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.framework.model
+package com.rtbishop.look4sat.common
sealed class DataState {
data class Success(val data: T) : DataState()
diff --git a/core/src/main/java/com/rtbishop/look4sat/data/SatelliteRepo.kt b/core/src/main/java/com/rtbishop/look4sat/data/DataRepository.kt
similarity index 74%
rename from core/src/main/java/com/rtbishop/look4sat/data/SatelliteRepo.kt
rename to core/src/main/java/com/rtbishop/look4sat/data/DataRepository.kt
index 07d1bc63..8454331a 100644
--- a/core/src/main/java/com/rtbishop/look4sat/data/SatelliteRepo.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/data/DataRepository.kt
@@ -17,9 +17,12 @@
*/
package com.rtbishop.look4sat.data
-import com.rtbishop.look4sat.domain.Transmitter
-import com.rtbishop.look4sat.domain.Satellite
-import com.rtbishop.look4sat.domain.TLE
+import com.rtbishop.look4sat.domain.Repository
+import com.rtbishop.look4sat.model.SatEntry
+import com.rtbishop.look4sat.model.SatItem
+import com.rtbishop.look4sat.model.Transmitter
+import com.rtbishop.look4sat.predict4kotlin.Satellite
+import com.rtbishop.look4sat.predict4kotlin.TLE
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.flow.Flow
@@ -28,38 +31,29 @@ import kotlinx.coroutines.withContext
import java.io.InputStream
import java.util.zip.ZipInputStream
-class SatelliteRepo(
- private val preferences: Preferences,
- private val localSource: LocalSource,
- private val remoteSource: RemoteSource,
+class DataRepository(
+ private val localSource: LocalDataSource,
+ private val remoteSource: RemoteDataSource,
private val repoDispatcher: CoroutineDispatcher
-) {
+) : Repository {
- fun saveSelectedModes(modes: List) {
- preferences.saveModesSelection(modes)
- }
-
- fun loadSelectedModes(): List {
- return preferences.loadModesSelection()
- }
-
- fun getSatItems(): Flow> {
+ override fun getSatItems(): Flow> {
return localSource.getEntriesWithModes()
}
- fun getSatTransmitters(catNum: Int): Flow> {
+ override fun getSatTransmitters(catNum: Int): Flow> {
return localSource.getTransmitters(catNum)
}
- suspend fun getSelectedSatellites(): List {
+ override suspend fun getSelectedSatellites(): List {
return localSource.getSelectedSatellites()
}
- suspend fun updateEntriesFromFile(stream: InputStream) = withContext(repoDispatcher) {
+ override suspend fun updateEntriesFromFile(stream: InputStream) = withContext(repoDispatcher) {
localSource.updateEntries(importSatEntries(stream))
}
- suspend fun updateEntriesFromWeb(sources: List) {
+ override suspend fun updateEntriesFromWeb(sources: List) {
coroutineScope {
launch(repoDispatcher) {
val streams = mutableListOf()
@@ -84,7 +78,7 @@ class SatelliteRepo(
}
}
- suspend fun updateEntriesSelection(catNums: List, isSelected: Boolean) {
+ override suspend fun updateEntriesSelection(catNums: List, isSelected: Boolean) {
localSource.updateEntriesSelection(catNums, isSelected)
}
diff --git a/core/src/main/java/com/rtbishop/look4sat/data/LocalSource.kt b/core/src/main/java/com/rtbishop/look4sat/data/LocalDataSource.kt
similarity index 85%
rename from core/src/main/java/com/rtbishop/look4sat/data/LocalSource.kt
rename to core/src/main/java/com/rtbishop/look4sat/data/LocalDataSource.kt
index 604b5630..e7d74964 100644
--- a/core/src/main/java/com/rtbishop/look4sat/data/LocalSource.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/data/LocalDataSource.kt
@@ -17,11 +17,13 @@
*/
package com.rtbishop.look4sat.data
-import com.rtbishop.look4sat.domain.Transmitter
-import com.rtbishop.look4sat.domain.Satellite
+import com.rtbishop.look4sat.model.SatEntry
+import com.rtbishop.look4sat.model.SatItem
+import com.rtbishop.look4sat.model.Transmitter
+import com.rtbishop.look4sat.predict4kotlin.Satellite
import kotlinx.coroutines.flow.Flow
-interface LocalSource {
+interface LocalDataSource {
fun getEntriesWithModes(): Flow>
diff --git a/core/src/main/java/com/rtbishop/look4sat/data/Preferences.kt b/core/src/main/java/com/rtbishop/look4sat/data/Preferences.kt
deleted file mode 100644
index 08a20883..00000000
--- a/core/src/main/java/com/rtbishop/look4sat/data/Preferences.kt
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Look4Sat. Amateur radio satellite tracker and pass predictor.
- * Copyright (C) 2019-2021 Arty Bishop (bishop.arty@gmail.com)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.rtbishop.look4sat.data
-
-import com.rtbishop.look4sat.domain.GeoPos
-
-interface Preferences {
-
- fun positionToQTH(lat: Double, lon: Double): String?
-
- fun loadStationPosition(): GeoPos
-
- fun saveStationPosition(pos: GeoPos)
-
- fun updatePositionFromGPS(): Boolean
-
- fun updatePositionFromQTH(qthString: String): Boolean
-
- fun getMagDeclination(): Float
-
- fun getHoursAhead(): Int
-
- fun getMinElevation(): Double
-
- fun shouldUseTextLabels(): Boolean
-
- fun shouldUseUTC(): Boolean
-
- fun shouldUseCompass(): Boolean
-
- fun shouldShowSweep(): Boolean
-
- fun isSetupDone(): Boolean
-
- fun setSetupDone()
-
- fun saveModesSelection(modes: List)
-
- fun loadModesSelection(): List
-
- fun getRotatorServer(): Pair?
-
- fun loadTleSources(): List
-
- fun saveTleSources(sources: List)
-
- fun loadDefaultSources(): List
-}
diff --git a/core/src/main/java/com/rtbishop/look4sat/data/RemoteSource.kt b/core/src/main/java/com/rtbishop/look4sat/data/RemoteDataSource.kt
similarity index 92%
rename from core/src/main/java/com/rtbishop/look4sat/data/RemoteSource.kt
rename to core/src/main/java/com/rtbishop/look4sat/data/RemoteDataSource.kt
index 9a1e1c98..73ab2924 100644
--- a/core/src/main/java/com/rtbishop/look4sat/data/RemoteSource.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/data/RemoteDataSource.kt
@@ -17,10 +17,10 @@
*/
package com.rtbishop.look4sat.data
-import com.rtbishop.look4sat.domain.Transmitter
+import com.rtbishop.look4sat.model.Transmitter
import java.io.InputStream
-interface RemoteSource {
+interface RemoteDataSource {
suspend fun fetchFileStream(url: String): InputStream?
diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/PassReporter.kt b/core/src/main/java/com/rtbishop/look4sat/domain/DataReporter.kt
similarity index 68%
rename from core/src/main/java/com/rtbishop/look4sat/domain/PassReporter.kt
rename to core/src/main/java/com/rtbishop/look4sat/domain/DataReporter.kt
index 8b350692..3dcd7cbd 100644
--- a/core/src/main/java/com/rtbishop/look4sat/domain/PassReporter.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/domain/DataReporter.kt
@@ -1,3 +1,20 @@
+/*
+ * Look4Sat. Amateur radio satellite tracker and pass predictor.
+ * Copyright (C) 2019-2021 Arty Bishop (bishop.arty@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
package com.rtbishop.look4sat.domain
import kotlinx.coroutines.CoroutineDispatcher
@@ -5,7 +22,7 @@ import kotlinx.coroutines.withContext
import java.io.BufferedWriter
import java.net.Socket
-class PassReporter(private val reporterDispatcher: CoroutineDispatcher) {
+class DataReporter(private val reporterDispatcher: CoroutineDispatcher) {
private var radioSocket: Socket? = null
private var radioWriter: BufferedWriter? = null
diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/QthConverter.kt b/core/src/main/java/com/rtbishop/look4sat/domain/QthConverter.kt
index 80aacccd..b53c8fd6 100644
--- a/core/src/main/java/com/rtbishop/look4sat/domain/QthConverter.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/domain/QthConverter.kt
@@ -17,6 +17,7 @@
*/
package com.rtbishop.look4sat.domain
+import com.rtbishop.look4sat.predict4kotlin.GeoPos
import kotlin.math.round
object QthConverter {
diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/Repository.kt b/core/src/main/java/com/rtbishop/look4sat/domain/Repository.kt
new file mode 100644
index 00000000..2651be83
--- /dev/null
+++ b/core/src/main/java/com/rtbishop/look4sat/domain/Repository.kt
@@ -0,0 +1,39 @@
+/*
+ * Look4Sat. Amateur radio satellite tracker and pass predictor.
+ * Copyright (C) 2019-2021 Arty Bishop (bishop.arty@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package com.rtbishop.look4sat.domain
+
+import com.rtbishop.look4sat.model.SatItem
+import com.rtbishop.look4sat.model.Transmitter
+import com.rtbishop.look4sat.predict4kotlin.Satellite
+import kotlinx.coroutines.flow.Flow
+import java.io.InputStream
+
+interface Repository {
+
+ fun getSatItems(): Flow>
+
+ fun getSatTransmitters(catNum: Int): Flow>
+
+ suspend fun getSelectedSatellites(): List
+
+ suspend fun updateEntriesFromFile(stream: InputStream)
+
+ suspend fun updateEntriesFromWeb(sources: List)
+
+ suspend fun updateEntriesSelection(catNums: List, isSelected: Boolean)
+}
diff --git a/core/src/main/java/com/rtbishop/look4sat/model/OMM.kt b/core/src/main/java/com/rtbishop/look4sat/model/OMM.kt
new file mode 100644
index 00000000..519126f6
--- /dev/null
+++ b/core/src/main/java/com/rtbishop/look4sat/model/OMM.kt
@@ -0,0 +1,31 @@
+/*
+ * Look4Sat. Amateur radio satellite tracker and pass predictor.
+ * Copyright (C) 2019-2021 Arty Bishop (bishop.arty@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package com.rtbishop.look4sat.model
+
+data class OMM(
+ val name: String,
+ val epochString: String,
+ val meanmo: Double,
+ val eccn: Double,
+ val incl: Double,
+ val raan: Double,
+ val argper: Double,
+ val meanan: Double,
+ val catnum: Int,
+ val bstar: Double,
+)
diff --git a/core/src/main/java/com/rtbishop/look4sat/data/SatEntry.kt b/core/src/main/java/com/rtbishop/look4sat/model/SatEntry.kt
similarity index 91%
rename from core/src/main/java/com/rtbishop/look4sat/data/SatEntry.kt
rename to core/src/main/java/com/rtbishop/look4sat/model/SatEntry.kt
index 1b7157b0..fe6d9b55 100644
--- a/core/src/main/java/com/rtbishop/look4sat/data/SatEntry.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/model/SatEntry.kt
@@ -15,9 +15,9 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.data
+package com.rtbishop.look4sat.model
-import com.rtbishop.look4sat.domain.TLE
+import com.rtbishop.look4sat.predict4kotlin.TLE
data class SatEntry(
val tle: TLE,
diff --git a/core/src/main/java/com/rtbishop/look4sat/data/SatItem.kt b/core/src/main/java/com/rtbishop/look4sat/model/SatItem.kt
similarity index 96%
rename from core/src/main/java/com/rtbishop/look4sat/data/SatItem.kt
rename to core/src/main/java/com/rtbishop/look4sat/model/SatItem.kt
index e754b461..21752953 100644
--- a/core/src/main/java/com/rtbishop/look4sat/data/SatItem.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/model/SatItem.kt
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.data
+package com.rtbishop.look4sat.model
data class SatItem(
val catNum: Int,
diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/Transmitter.kt b/core/src/main/java/com/rtbishop/look4sat/model/Transmitter.kt
similarity index 96%
rename from core/src/main/java/com/rtbishop/look4sat/domain/Transmitter.kt
rename to core/src/main/java/com/rtbishop/look4sat/model/Transmitter.kt
index 882400c7..62daa909 100644
--- a/core/src/main/java/com/rtbishop/look4sat/domain/Transmitter.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/model/Transmitter.kt
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.domain
+package com.rtbishop.look4sat.model
data class Transmitter(
val uuid: String,
diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/DeepSpaceSat.kt b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/DeepSpaceSat.kt
similarity index 99%
rename from core/src/main/java/com/rtbishop/look4sat/domain/DeepSpaceSat.kt
rename to core/src/main/java/com/rtbishop/look4sat/predict4kotlin/DeepSpaceSat.kt
index f1d1fc6b..483c11fe 100644
--- a/core/src/main/java/com/rtbishop/look4sat/domain/DeepSpaceSat.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/DeepSpaceSat.kt
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.domain
+package com.rtbishop.look4sat.predict4kotlin
import kotlin.math.*
diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/GeoPos.kt b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/GeoPos.kt
similarity index 95%
rename from core/src/main/java/com/rtbishop/look4sat/domain/GeoPos.kt
rename to core/src/main/java/com/rtbishop/look4sat/predict4kotlin/GeoPos.kt
index b1c779c8..4213ff5b 100644
--- a/core/src/main/java/com/rtbishop/look4sat/domain/GeoPos.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/GeoPos.kt
@@ -15,6 +15,6 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.domain
+package com.rtbishop.look4sat.predict4kotlin
data class GeoPos(val latitude: Double, val longitude: Double, val altitude: Double = 0.0)
diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/NearEarthSat.kt b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/NearEarthSat.kt
similarity index 99%
rename from core/src/main/java/com/rtbishop/look4sat/domain/NearEarthSat.kt
rename to core/src/main/java/com/rtbishop/look4sat/predict4kotlin/NearEarthSat.kt
index 38a526df..00bf9f06 100644
--- a/core/src/main/java/com/rtbishop/look4sat/domain/NearEarthSat.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/NearEarthSat.kt
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.domain
+package com.rtbishop.look4sat.predict4kotlin
import kotlin.math.*
diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/Predictor.kt b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/Predictor.kt
similarity index 99%
rename from core/src/main/java/com/rtbishop/look4sat/domain/Predictor.kt
rename to core/src/main/java/com/rtbishop/look4sat/predict4kotlin/Predictor.kt
index b0b454d3..cdaf9b5a 100644
--- a/core/src/main/java/com/rtbishop/look4sat/domain/Predictor.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/Predictor.kt
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.domain
+package com.rtbishop.look4sat.predict4kotlin
import com.rtbishop.look4sat.domain.*
import kotlinx.coroutines.CoroutineDispatcher
diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/SatPass.kt b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/SatPass.kt
similarity index 96%
rename from core/src/main/java/com/rtbishop/look4sat/domain/SatPass.kt
rename to core/src/main/java/com/rtbishop/look4sat/predict4kotlin/SatPass.kt
index 3ea2dd90..3f2a9558 100644
--- a/core/src/main/java/com/rtbishop/look4sat/domain/SatPass.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/SatPass.kt
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.domain
+package com.rtbishop.look4sat.predict4kotlin
data class SatPass(
val aosTime: Long,
diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/SatPos.kt b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/SatPos.kt
similarity index 98%
rename from core/src/main/java/com/rtbishop/look4sat/domain/SatPos.kt
rename to core/src/main/java/com/rtbishop/look4sat/predict4kotlin/SatPos.kt
index 4b80f874..e787dd34 100644
--- a/core/src/main/java/com/rtbishop/look4sat/domain/SatPos.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/SatPos.kt
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.domain
+package com.rtbishop.look4sat.predict4kotlin
import kotlin.math.*
diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/Satellite.kt b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/Satellite.kt
similarity index 99%
rename from core/src/main/java/com/rtbishop/look4sat/domain/Satellite.kt
rename to core/src/main/java/com/rtbishop/look4sat/predict4kotlin/Satellite.kt
index 585119a4..90c46286 100644
--- a/core/src/main/java/com/rtbishop/look4sat/domain/Satellite.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/Satellite.kt
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.domain
+package com.rtbishop.look4sat.predict4kotlin
import java.util.*
import java.util.concurrent.atomic.AtomicReference
diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/TLE.kt b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/TLE.kt
similarity index 98%
rename from core/src/main/java/com/rtbishop/look4sat/domain/TLE.kt
rename to core/src/main/java/com/rtbishop/look4sat/predict4kotlin/TLE.kt
index df3ef2dc..b86f4932 100644
--- a/core/src/main/java/com/rtbishop/look4sat/domain/TLE.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/TLE.kt
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat.domain
+package com.rtbishop.look4sat.predict4kotlin
import java.io.InputStream
import kotlin.math.pow
diff --git a/core/src/main/java/com/rtbishop/look4sat/usecases/GetSelectedSatellites.kt b/core/src/main/java/com/rtbishop/look4sat/usecases/GetSelectedSatellites.kt
new file mode 100644
index 00000000..81338f90
--- /dev/null
+++ b/core/src/main/java/com/rtbishop/look4sat/usecases/GetSelectedSatellites.kt
@@ -0,0 +1,24 @@
+/*
+ * Look4Sat. Amateur radio satellite tracker and pass predictor.
+ * Copyright (C) 2019-2021 Arty Bishop (bishop.arty@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package com.rtbishop.look4sat.usecases
+
+import com.rtbishop.look4sat.domain.Repository
+
+class GetSelectedSatellites(private val dataRepository: Repository) {
+ suspend operator fun invoke() = dataRepository.getSelectedSatellites()
+}
diff --git a/core/src/test/java/com/rtbishop/look4sat/QthConverterTest.kt b/core/src/test/java/com/rtbishop/look4sat/domain/QthConverterTest.kt
similarity index 96%
rename from core/src/test/java/com/rtbishop/look4sat/QthConverterTest.kt
rename to core/src/test/java/com/rtbishop/look4sat/domain/QthConverterTest.kt
index 9667fb7b..11d2b936 100644
--- a/core/src/test/java/com/rtbishop/look4sat/QthConverterTest.kt
+++ b/core/src/test/java/com/rtbishop/look4sat/domain/QthConverterTest.kt
@@ -15,9 +15,8 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package com.rtbishop.look4sat
+package com.rtbishop.look4sat.domain
-import com.rtbishop.look4sat.domain.QthConverter
import org.junit.Test
class QthConverterTest {
diff --git a/core/src/test/java/com/rtbishop/look4sat/TleParserTest.kt b/core/src/test/java/com/rtbishop/look4sat/predict4kotlin/TleParserTest.kt
similarity index 65%
rename from core/src/test/java/com/rtbishop/look4sat/TleParserTest.kt
rename to core/src/test/java/com/rtbishop/look4sat/predict4kotlin/TleParserTest.kt
index 2b92a872..3e9feaa5 100644
--- a/core/src/test/java/com/rtbishop/look4sat/TleParserTest.kt
+++ b/core/src/test/java/com/rtbishop/look4sat/predict4kotlin/TleParserTest.kt
@@ -1,6 +1,22 @@
-package com.rtbishop.look4sat
+/*
+ * Look4Sat. Amateur radio satellite tracker and pass predictor.
+ * Copyright (C) 2019-2021 Arty Bishop (bishop.arty@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package com.rtbishop.look4sat.predict4kotlin
-import com.rtbishop.look4sat.domain.TLE
import org.junit.Test
class TleParserTest {