From 4c83cd2e21090aaffd5d0ca50f963d6578d58374 Mon Sep 17 00:00:00 2001 From: Arty Bishop Date: Sun, 28 Feb 2021 19:00:08 +0000 Subject: [PATCH] Code refactoring, moving classes to new packages --- app/src/main/AndroidManifest.xml | 2 +- .../java/com/rtbishop/look4sat/data/Result.kt | 26 +++++----- .../com/rtbishop/look4sat/data/SatEntry.kt | 37 +++++++------- .../com/rtbishop/look4sat/data/SatTrans.kt | 26 +++++----- .../com/rtbishop/look4sat/data/TleSource.kt | 26 +++++----- .../rtbishop/look4sat/di/DispatchersModule.kt | 6 +-- .../com/rtbishop/look4sat/di/NetworkModule.kt | 4 +- .../rtbishop/look4sat/di/RepositoryModule.kt | 12 ++--- .../look4sat/repo/local/SatelliteDb.kt | 42 ---------------- .../{repo => repository}/EntriesRepo.kt | 48 +++++++++++-------- .../{repo => repository}/SourcesRepo.kt | 4 +- .../{repo => repository}/TransmittersRepo.kt | 16 +++---- .../localData}/EntriesDao.kt | 25 +++++----- .../repository/localData/SatelliteDb.kt | 39 +++++++++++++++ .../localData}/SourcesDao.kt | 2 +- .../localData}/TransmittersDao.kt | 22 ++++----- .../remoteData}/TransmittersApi.kt | 4 +- .../ui/{mainScreen => }/MainActivity.kt | 2 +- .../look4sat/{ => ui}/SharedViewModel.kt | 10 ++-- .../EntriesAdapter.kt | 28 +++++------ .../EntriesFragment.kt | 11 ++--- .../InfoFragment.kt | 2 +- .../{mainScreen => mapScreen}/MapFragment.kt | 10 ++-- .../{mainScreen => mapScreen}/MapViewModel.kt | 2 +- .../PassesAdapter.kt | 8 ++-- .../PassesFragment.kt | 11 ++--- .../PolarFragment.kt | 34 +++++++------ .../ui/{views => polarScreen}/PolarView.kt | 22 ++++----- .../{adapters => polarScreen}/TransAdapter.kt | 8 ++-- .../PrefsFragment.kt | 2 +- .../SourcesAdapter.kt | 18 +++---- .../SourcesDialog.kt | 11 ++--- .../SplashDialog.kt | 2 +- .../rtbishop/look4sat/utility/PrefsManager.kt | 7 +-- .../look4sat/utility/RecyclerDivider.kt | 25 +++++----- .../{TypeConverters.kt => RoomConverters.kt} | 2 +- app/src/main/res/layout/fragment_info.xml | 2 +- app/src/main/res/navigation/nav_graph.xml | 16 +++---- 38 files changed, 285 insertions(+), 289 deletions(-) delete mode 100644 app/src/main/java/com/rtbishop/look4sat/repo/local/SatelliteDb.kt rename app/src/main/java/com/rtbishop/look4sat/{repo => repository}/EntriesRepo.kt (65%) rename app/src/main/java/com/rtbishop/look4sat/{repo => repository}/SourcesRepo.kt (93%) rename app/src/main/java/com/rtbishop/look4sat/{repo => repository}/TransmittersRepo.kt (71%) rename app/src/main/java/com/rtbishop/look4sat/{repo/local => repository/localData}/EntriesDao.kt (76%) create mode 100644 app/src/main/java/com/rtbishop/look4sat/repository/localData/SatelliteDb.kt rename app/src/main/java/com/rtbishop/look4sat/{repo/local => repository/localData}/SourcesDao.kt (96%) rename app/src/main/java/com/rtbishop/look4sat/{repo/local => repository/localData}/TransmittersDao.kt (77%) rename app/src/main/java/com/rtbishop/look4sat/{repo/remote => repository/remoteData}/TransmittersApi.kt (91%) rename app/src/main/java/com/rtbishop/look4sat/ui/{mainScreen => }/MainActivity.kt (97%) rename app/src/main/java/com/rtbishop/look4sat/{ => ui}/SharedViewModel.kt (95%) rename app/src/main/java/com/rtbishop/look4sat/ui/{adapters => entriesScreen}/EntriesAdapter.kt (79%) rename app/src/main/java/com/rtbishop/look4sat/ui/{mainScreen => entriesScreen}/EntriesFragment.kt (93%) rename app/src/main/java/com/rtbishop/look4sat/ui/{mainScreen => infoScreen}/InfoFragment.kt (98%) rename app/src/main/java/com/rtbishop/look4sat/ui/{mainScreen => mapScreen}/MapFragment.kt (96%) rename app/src/main/java/com/rtbishop/look4sat/ui/{mainScreen => mapScreen}/MapViewModel.kt (99%) rename app/src/main/java/com/rtbishop/look4sat/ui/{adapters => passesScreen}/PassesAdapter.kt (96%) rename app/src/main/java/com/rtbishop/look4sat/ui/{mainScreen => passesScreen}/PassesFragment.kt (93%) rename app/src/main/java/com/rtbishop/look4sat/ui/{mainScreen => polarScreen}/PolarFragment.kt (85%) rename app/src/main/java/com/rtbishop/look4sat/ui/{views => polarScreen}/PolarView.kt (94%) rename app/src/main/java/com/rtbishop/look4sat/ui/{adapters => polarScreen}/TransAdapter.kt (94%) rename app/src/main/java/com/rtbishop/look4sat/ui/{mainScreen => prefsScreen}/PrefsFragment.kt (99%) rename app/src/main/java/com/rtbishop/look4sat/ui/{adapters => sourcesDialog}/SourcesAdapter.kt (79%) rename app/src/main/java/com/rtbishop/look4sat/ui/{mainScreen => sourcesDialog}/SourcesDialog.kt (95%) rename app/src/main/java/com/rtbishop/look4sat/ui/{mainScreen => splashDialog}/SplashDialog.kt (97%) rename app/src/main/java/com/rtbishop/look4sat/utility/{TypeConverters.kt => RoomConverters.kt} (98%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 41d76fe6..d0c562cb 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ android:icon="@mipmap/ic_launcher" android:label="@string/app_name"> diff --git a/app/src/main/java/com/rtbishop/look4sat/data/Result.kt b/app/src/main/java/com/rtbishop/look4sat/data/Result.kt index c7d3416f..604a2f7c 100644 --- a/app/src/main/java/com/rtbishop/look4sat/data/Result.kt +++ b/app/src/main/java/com/rtbishop/look4sat/data/Result.kt @@ -1,20 +1,20 @@ /******************************************************************************* - Look4Sat. Amateur radio satellite tracker and pass predictor. - Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com) +Look4Sat. Amateur radio satellite tracker and pass predictor. +Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com) - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ package com.rtbishop.look4sat.data diff --git a/app/src/main/java/com/rtbishop/look4sat/data/SatEntry.kt b/app/src/main/java/com/rtbishop/look4sat/data/SatEntry.kt index 132f1964..347da288 100644 --- a/app/src/main/java/com/rtbishop/look4sat/data/SatEntry.kt +++ b/app/src/main/java/com/rtbishop/look4sat/data/SatEntry.kt @@ -1,20 +1,20 @@ /******************************************************************************* - Look4Sat. Amateur radio satellite tracker and pass predictor. - Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com) +Look4Sat. Amateur radio satellite tracker and pass predictor. +Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com) - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ package com.rtbishop.look4sat.data @@ -24,8 +24,9 @@ import androidx.room.PrimaryKey import com.github.amsacode.predict4java.TLE @Entity(tableName = "entries") -data class SatEntry(val tle: TLE, var isSelected: Boolean = false) { - @PrimaryKey - var catNum: Int = tle.catnum - var name: String = tle.name -} +data class SatEntry( + val tle: TLE, + var isSelected: Boolean = false, + @PrimaryKey val catNum: Int = tle.catnum, + val name: String = tle.name +) \ No newline at end of file diff --git a/app/src/main/java/com/rtbishop/look4sat/data/SatTrans.kt b/app/src/main/java/com/rtbishop/look4sat/data/SatTrans.kt index 71374a11..03b3adbb 100644 --- a/app/src/main/java/com/rtbishop/look4sat/data/SatTrans.kt +++ b/app/src/main/java/com/rtbishop/look4sat/data/SatTrans.kt @@ -1,20 +1,20 @@ /******************************************************************************* - Look4Sat. Amateur radio satellite tracker and pass predictor. - Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com) +Look4Sat. Amateur radio satellite tracker and pass predictor. +Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com) - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ package com.rtbishop.look4sat.data diff --git a/app/src/main/java/com/rtbishop/look4sat/data/TleSource.kt b/app/src/main/java/com/rtbishop/look4sat/data/TleSource.kt index 00830fd8..10869cf4 100644 --- a/app/src/main/java/com/rtbishop/look4sat/data/TleSource.kt +++ b/app/src/main/java/com/rtbishop/look4sat/data/TleSource.kt @@ -1,20 +1,20 @@ /******************************************************************************* - Look4Sat. Amateur radio satellite tracker and pass predictor. - Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com) +Look4Sat. Amateur radio satellite tracker and pass predictor. +Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com) - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ package com.rtbishop.look4sat.data diff --git a/app/src/main/java/com/rtbishop/look4sat/di/DispatchersModule.kt b/app/src/main/java/com/rtbishop/look4sat/di/DispatchersModule.kt index 416330e5..d3ee5aa0 100644 --- a/app/src/main/java/com/rtbishop/look4sat/di/DispatchersModule.kt +++ b/app/src/main/java/com/rtbishop/look4sat/di/DispatchersModule.kt @@ -33,15 +33,15 @@ object DispatchersModule { @Provides @DefaultDispatcher - fun provideDefaultDispatcher(): CoroutineDispatcher = Dispatchers.Default + fun getDefaultDispatcher(): CoroutineDispatcher = Dispatchers.Default @Provides @IoDispatcher - fun provideIoDispatcher(): CoroutineDispatcher = Dispatchers.IO + fun getIoDispatcher(): CoroutineDispatcher = Dispatchers.IO @Provides @MainDispatcher - fun provideMainDispatcher(): CoroutineDispatcher = Dispatchers.Main + fun getMainDispatcher(): CoroutineDispatcher = Dispatchers.Main } @Qualifier diff --git a/app/src/main/java/com/rtbishop/look4sat/di/NetworkModule.kt b/app/src/main/java/com/rtbishop/look4sat/di/NetworkModule.kt index e3d936b2..b506e6ef 100644 --- a/app/src/main/java/com/rtbishop/look4sat/di/NetworkModule.kt +++ b/app/src/main/java/com/rtbishop/look4sat/di/NetworkModule.kt @@ -19,7 +19,7 @@ package com.rtbishop.look4sat.di -import com.rtbishop.look4sat.repo.remote.TransmittersApi +import com.rtbishop.look4sat.repository.remoteData.TransmittersApi import com.squareup.moshi.Moshi import dagger.Module import dagger.Provides @@ -42,7 +42,7 @@ object NetworkModule { @Provides @Singleton - fun provideMoshi(): Moshi { + fun getMoshi(): Moshi { return Moshi.Builder().build() } diff --git a/app/src/main/java/com/rtbishop/look4sat/di/RepositoryModule.kt b/app/src/main/java/com/rtbishop/look4sat/di/RepositoryModule.kt index e7ed0df4..beee5edf 100644 --- a/app/src/main/java/com/rtbishop/look4sat/di/RepositoryModule.kt +++ b/app/src/main/java/com/rtbishop/look4sat/di/RepositoryModule.kt @@ -22,11 +22,11 @@ package com.rtbishop.look4sat.di import android.content.ContentResolver import android.content.Context import androidx.room.Room -import com.rtbishop.look4sat.repo.local.EntriesDao -import com.rtbishop.look4sat.repo.local.SatelliteDb -import com.rtbishop.look4sat.repo.local.SourcesDao -import com.rtbishop.look4sat.repo.local.TransmittersDao -import com.rtbishop.look4sat.utility.TypeConverters +import com.rtbishop.look4sat.repository.localData.EntriesDao +import com.rtbishop.look4sat.repository.localData.SatelliteDb +import com.rtbishop.look4sat.repository.localData.SourcesDao +import com.rtbishop.look4sat.repository.localData.TransmittersDao +import com.rtbishop.look4sat.utility.RoomConverters import com.squareup.moshi.Moshi import dagger.Module import dagger.Provides @@ -66,7 +66,7 @@ object RepositoryModule { @Provides @Singleton fun getSatelliteDb(@ApplicationContext context: Context, moshi: Moshi): SatelliteDb { - TypeConverters.initialize(moshi) + RoomConverters.initialize(moshi) return Room.databaseBuilder(context, SatelliteDb::class.java, "satDb").build() } } diff --git a/app/src/main/java/com/rtbishop/look4sat/repo/local/SatelliteDb.kt b/app/src/main/java/com/rtbishop/look4sat/repo/local/SatelliteDb.kt deleted file mode 100644 index 01b00e3a..00000000 --- a/app/src/main/java/com/rtbishop/look4sat/repo/local/SatelliteDb.kt +++ /dev/null @@ -1,42 +0,0 @@ -/******************************************************************************* - Look4Sat. Amateur radio satellite tracker and pass predictor. - Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - ******************************************************************************/ - -package com.rtbishop.look4sat.repo.local - -import androidx.room.Database -import androidx.room.RoomDatabase -import androidx.room.TypeConverters -import com.rtbishop.look4sat.data.SatEntry -import com.rtbishop.look4sat.data.SatTrans -import com.rtbishop.look4sat.data.TleSource - -@Database( - entities = [TleSource::class, SatEntry::class, SatTrans::class], - version = 1, - exportSchema = false -) -@TypeConverters(com.rtbishop.look4sat.utility.TypeConverters::class) -abstract class SatelliteDb : RoomDatabase() { - - abstract fun sourcesDao(): SourcesDao - - abstract fun entriesDao(): EntriesDao - - abstract fun transmittersDao(): TransmittersDao -} diff --git a/app/src/main/java/com/rtbishop/look4sat/repo/EntriesRepo.kt b/app/src/main/java/com/rtbishop/look4sat/repository/EntriesRepo.kt similarity index 65% rename from app/src/main/java/com/rtbishop/look4sat/repo/EntriesRepo.kt rename to app/src/main/java/com/rtbishop/look4sat/repository/EntriesRepo.kt index 2ead16fc..3497757f 100644 --- a/app/src/main/java/com/rtbishop/look4sat/repo/EntriesRepo.kt +++ b/app/src/main/java/com/rtbishop/look4sat/repository/EntriesRepo.kt @@ -17,15 +17,16 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ -package com.rtbishop.look4sat.repo +package com.rtbishop.look4sat.repository import android.content.ContentResolver import android.net.Uri import com.github.amsacode.predict4java.TLE import com.rtbishop.look4sat.data.SatEntry import com.rtbishop.look4sat.data.TleSource -import com.rtbishop.look4sat.repo.local.EntriesDao -import kotlinx.coroutines.Dispatchers +import com.rtbishop.look4sat.di.IoDispatcher +import com.rtbishop.look4sat.repository.localData.EntriesDao +import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.withContext import okhttp3.OkHttpClient @@ -34,30 +35,37 @@ import java.io.InputStream import javax.inject.Inject class EntriesRepo @Inject constructor( - private val resolver: ContentResolver, + private val entriesDao: EntriesDao, private val client: OkHttpClient, - private val entriesDao: EntriesDao + private val resolver: ContentResolver, + @IoDispatcher private val ioDispatcher: CoroutineDispatcher ) { fun getEntries(): Flow> { return entriesDao.getEntries() } - suspend fun updateEntriesFromFile(fileUri: Uri) { - withContext(Dispatchers.IO) { - kotlin.runCatching { - resolver.openInputStream(fileUri)?.use { stream -> - val importedEntries = TLE.importSat(stream).map { SatEntry(it) } - val selection = entriesDao.getEntriesSelection() - entriesDao.insertEntries(importedEntries) - entriesDao.updateEntriesSelection(selection) + suspend fun getSelectedEntries(): List { + return entriesDao.getSelectedEntries() + } + + suspend fun updateEntriesSelection(catNums: List) { + entriesDao.updateEntriesSelection(catNums) + } + + suspend fun updateEntriesFromFile(uri: Uri) { + withContext(ioDispatcher) { + runCatching { + resolver.openInputStream(uri)?.use { stream -> + val importedEntries = TLE.importSat(stream).map { tle -> SatEntry(tle) } + updateAndRestoreSelection(importedEntries) } } } } - suspend fun updateEntriesFromSources(sources: List) { - withContext(Dispatchers.IO) { + suspend fun updateEntriesFromWeb(sources: List) { + withContext(ioDispatcher) { val streams = mutableListOf() sources.forEach { source -> val request = Request.Builder().url(source.url).build() @@ -69,13 +77,13 @@ class EntriesRepo @Inject constructor( val entries = TLE.importSat(stream).map { tle -> SatEntry(tle) } importedEntries.addAll(entries) } - val selection = entriesDao.getEntriesSelection() - entriesDao.insertEntries(importedEntries) - entriesDao.updateEntriesSelection(selection) + updateAndRestoreSelection(importedEntries) } } - suspend fun updateEntriesSelection(satIds: List) { - entriesDao.updateEntriesSelection(satIds) + private suspend fun updateAndRestoreSelection(entries: List) { + val selectedCatNums = entriesDao.getSelectedCatNums() + entriesDao.insertEntries(entries) + entriesDao.updateEntriesSelection(selectedCatNums) } } \ No newline at end of file diff --git a/app/src/main/java/com/rtbishop/look4sat/repo/SourcesRepo.kt b/app/src/main/java/com/rtbishop/look4sat/repository/SourcesRepo.kt similarity index 93% rename from app/src/main/java/com/rtbishop/look4sat/repo/SourcesRepo.kt rename to app/src/main/java/com/rtbishop/look4sat/repository/SourcesRepo.kt index cd8166bd..2b1506fc 100644 --- a/app/src/main/java/com/rtbishop/look4sat/repo/SourcesRepo.kt +++ b/app/src/main/java/com/rtbishop/look4sat/repository/SourcesRepo.kt @@ -17,10 +17,10 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ -package com.rtbishop.look4sat.repo +package com.rtbishop.look4sat.repository import com.rtbishop.look4sat.data.TleSource -import com.rtbishop.look4sat.repo.local.SourcesDao +import com.rtbishop.look4sat.repository.localData.SourcesDao import kotlinx.coroutines.flow.Flow import javax.inject.Inject diff --git a/app/src/main/java/com/rtbishop/look4sat/repo/TransmittersRepo.kt b/app/src/main/java/com/rtbishop/look4sat/repository/TransmittersRepo.kt similarity index 71% rename from app/src/main/java/com/rtbishop/look4sat/repo/TransmittersRepo.kt rename to app/src/main/java/com/rtbishop/look4sat/repository/TransmittersRepo.kt index 7886158a..b2566dac 100644 --- a/app/src/main/java/com/rtbishop/look4sat/repo/TransmittersRepo.kt +++ b/app/src/main/java/com/rtbishop/look4sat/repository/TransmittersRepo.kt @@ -17,24 +17,24 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ -package com.rtbishop.look4sat.repo +package com.rtbishop.look4sat.repository import com.rtbishop.look4sat.data.SatTrans -import com.rtbishop.look4sat.repo.local.TransmittersDao -import com.rtbishop.look4sat.repo.remote.TransmittersApi +import com.rtbishop.look4sat.repository.localData.TransmittersDao +import com.rtbishop.look4sat.repository.remoteData.TransmittersApi import kotlinx.coroutines.flow.Flow import javax.inject.Inject class TransmittersRepo @Inject constructor( - private val transmittersDao: TransmittersDao, - private val transmittersApi: TransmittersApi + private val transmittersApi: TransmittersApi, + private val transmittersDao: TransmittersDao ) { - fun getTransmittersForSat(satId: Int): Flow> { - return transmittersDao.getTransmittersForSat(satId) + fun getTransmittersForSat(catNum: Int): Flow> { + return transmittersDao.getTransmittersForSat(catNum) } suspend fun updateTransmitters() { - transmittersDao.updateTransmitters(transmittersApi.getTransmitters()) + transmittersDao.insertTransmitters(transmittersApi.fetchTransmitters()) } } \ No newline at end of file diff --git a/app/src/main/java/com/rtbishop/look4sat/repo/local/EntriesDao.kt b/app/src/main/java/com/rtbishop/look4sat/repository/localData/EntriesDao.kt similarity index 76% rename from app/src/main/java/com/rtbishop/look4sat/repo/local/EntriesDao.kt rename to app/src/main/java/com/rtbishop/look4sat/repository/localData/EntriesDao.kt index 8915038f..ae6741e1 100644 --- a/app/src/main/java/com/rtbishop/look4sat/repo/local/EntriesDao.kt +++ b/app/src/main/java/com/rtbishop/look4sat/repository/localData/EntriesDao.kt @@ -17,7 +17,7 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ -package com.rtbishop.look4sat.repo.local +package com.rtbishop.look4sat.repository.localData import androidx.room.* import com.rtbishop.look4sat.data.SatEntry @@ -28,22 +28,25 @@ interface EntriesDao { @Query("SELECT * FROM entries ORDER BY name ASC") fun getEntries(): Flow> - + @Insert(onConflict = OnConflictStrategy.REPLACE) suspend fun insertEntries(entries: List) - + + @Query("SELECT * FROM entries WHERE isSelected = 1") + suspend fun getSelectedEntries(): List + @Query("SELECT catNum FROM entries WHERE isSelected = 1") - suspend fun getEntriesSelection(): List - + suspend fun getSelectedCatNums(): List + @Transaction - suspend fun updateEntriesSelection(satIds: List) { + suspend fun updateEntriesSelection(catNums: List) { clearSelection() - satIds.forEach { updateSelection(it) } + catNums.forEach { catNum -> updateSelection(catNum) } } - + @Query("UPDATE entries SET isSelected = 0") suspend fun clearSelection() - - @Query("UPDATE entries SET isSelected = 1 WHERE catNum = :satId") - suspend fun updateSelection(satId: Int) + + @Query("UPDATE entries SET isSelected = 1 WHERE catNum = :catNum") + suspend fun updateSelection(catNum: Int) } diff --git a/app/src/main/java/com/rtbishop/look4sat/repository/localData/SatelliteDb.kt b/app/src/main/java/com/rtbishop/look4sat/repository/localData/SatelliteDb.kt new file mode 100644 index 00000000..a14cc1a2 --- /dev/null +++ b/app/src/main/java/com/rtbishop/look4sat/repository/localData/SatelliteDb.kt @@ -0,0 +1,39 @@ +/******************************************************************************* +Look4Sat. Amateur radio satellite tracker and pass predictor. +Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com) + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ******************************************************************************/ + +package com.rtbishop.look4sat.repository.localData + +import androidx.room.Database +import androidx.room.RoomDatabase +import androidx.room.TypeConverters +import com.rtbishop.look4sat.data.SatEntry +import com.rtbishop.look4sat.data.SatTrans +import com.rtbishop.look4sat.data.TleSource +import com.rtbishop.look4sat.utility.RoomConverters + +@Database(entities = [TleSource::class, SatEntry::class, SatTrans::class], version = 1) +@TypeConverters(RoomConverters::class) +abstract class SatelliteDb : RoomDatabase() { + + abstract fun sourcesDao(): SourcesDao + + abstract fun entriesDao(): EntriesDao + + abstract fun transmittersDao(): TransmittersDao +} diff --git a/app/src/main/java/com/rtbishop/look4sat/repo/local/SourcesDao.kt b/app/src/main/java/com/rtbishop/look4sat/repository/localData/SourcesDao.kt similarity index 96% rename from app/src/main/java/com/rtbishop/look4sat/repo/local/SourcesDao.kt rename to app/src/main/java/com/rtbishop/look4sat/repository/localData/SourcesDao.kt index 669f4619..3ec28715 100644 --- a/app/src/main/java/com/rtbishop/look4sat/repo/local/SourcesDao.kt +++ b/app/src/main/java/com/rtbishop/look4sat/repository/localData/SourcesDao.kt @@ -17,7 +17,7 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ -package com.rtbishop.look4sat.repo.local +package com.rtbishop.look4sat.repository.localData import androidx.room.* import com.rtbishop.look4sat.data.TleSource diff --git a/app/src/main/java/com/rtbishop/look4sat/repo/local/TransmittersDao.kt b/app/src/main/java/com/rtbishop/look4sat/repository/localData/TransmittersDao.kt similarity index 77% rename from app/src/main/java/com/rtbishop/look4sat/repo/local/TransmittersDao.kt rename to app/src/main/java/com/rtbishop/look4sat/repository/localData/TransmittersDao.kt index d00ba674..5082dee3 100644 --- a/app/src/main/java/com/rtbishop/look4sat/repo/local/TransmittersDao.kt +++ b/app/src/main/java/com/rtbishop/look4sat/repository/localData/TransmittersDao.kt @@ -17,27 +17,21 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ -package com.rtbishop.look4sat.repo.local +package com.rtbishop.look4sat.repository.localData -import androidx.room.* +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query import com.rtbishop.look4sat.data.SatTrans import kotlinx.coroutines.flow.Flow @Dao interface TransmittersDao { - @Query("SELECT * FROM transmitters WHERE isAlive = 1 and catNum = :satId") - fun getTransmittersForSat(satId: Int): Flow> - - @Transaction - suspend fun updateTransmitters(transmitters: List) { - clearTransmitters() - insertTransmitters(transmitters) - } - - @Query("DELETE FROM transmitters") - suspend fun clearTransmitters() - + @Query("SELECT * FROM transmitters WHERE isAlive = 1 and catNum = :catNum") + fun getTransmittersForSat(catNum: Int): Flow> + @Insert(onConflict = OnConflictStrategy.REPLACE) suspend fun insertTransmitters(transmitters: List) } diff --git a/app/src/main/java/com/rtbishop/look4sat/repo/remote/TransmittersApi.kt b/app/src/main/java/com/rtbishop/look4sat/repository/remoteData/TransmittersApi.kt similarity index 91% rename from app/src/main/java/com/rtbishop/look4sat/repo/remote/TransmittersApi.kt rename to app/src/main/java/com/rtbishop/look4sat/repository/remoteData/TransmittersApi.kt index 73d4f8be..cdb75164 100644 --- a/app/src/main/java/com/rtbishop/look4sat/repo/remote/TransmittersApi.kt +++ b/app/src/main/java/com/rtbishop/look4sat/repository/remoteData/TransmittersApi.kt @@ -17,7 +17,7 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ -package com.rtbishop.look4sat.repo.remote +package com.rtbishop.look4sat.repository.remoteData import com.rtbishop.look4sat.data.SatTrans import retrofit2.http.GET @@ -25,5 +25,5 @@ import retrofit2.http.GET interface TransmittersApi { @GET("transmitters/") - suspend fun getTransmitters(): List + suspend fun fetchTransmitters(): List } diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/MainActivity.kt b/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt similarity index 97% rename from app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/MainActivity.kt rename to app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt index b3e6e42f..9bb49470 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/MainActivity.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt @@ -17,7 +17,7 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ -package com.rtbishop.look4sat.ui.mainScreen +package com.rtbishop.look4sat.ui import android.os.Bundle import androidx.appcompat.app.AppCompatActivity diff --git a/app/src/main/java/com/rtbishop/look4sat/SharedViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt similarity index 95% rename from app/src/main/java/com/rtbishop/look4sat/SharedViewModel.kt rename to app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt index 7ac01b12..18c18da5 100644 --- a/app/src/main/java/com/rtbishop/look4sat/SharedViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt @@ -17,15 +17,15 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ -package com.rtbishop.look4sat +package com.rtbishop.look4sat.ui import android.net.Uri import androidx.lifecycle.* import com.github.amsacode.predict4java.SatelliteFactory import com.rtbishop.look4sat.data.* -import com.rtbishop.look4sat.repo.EntriesRepo -import com.rtbishop.look4sat.repo.SourcesRepo -import com.rtbishop.look4sat.repo.TransmittersRepo +import com.rtbishop.look4sat.repository.EntriesRepo +import com.rtbishop.look4sat.repository.SourcesRepo +import com.rtbishop.look4sat.repository.TransmittersRepo import com.rtbishop.look4sat.utility.PrefsManager import com.rtbishop.look4sat.utility.getPredictor import dagger.hilt.android.lifecycle.HiltViewModel @@ -107,7 +107,7 @@ class SharedViewModel @Inject constructor( viewModelScope.launch { try { sourcesRepo.updateSources(sources) - entriesRepo.updateEntriesFromSources(sources) + entriesRepo.updateEntriesFromWeb(sources) transmittersRepo.updateTransmitters() } catch (exception: Exception) { postAppEvent(Event(1)) diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/adapters/EntriesAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesAdapter.kt similarity index 79% rename from app/src/main/java/com/rtbishop/look4sat/ui/adapters/EntriesAdapter.kt rename to app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesAdapter.kt index 7cf6cf71..cbb2ec83 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/adapters/EntriesAdapter.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesAdapter.kt @@ -1,23 +1,23 @@ /******************************************************************************* - Look4Sat. Amateur radio satellite tracker and pass predictor. - Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com) +Look4Sat. Amateur radio satellite tracker and pass predictor. +Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com) - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ -package com.rtbishop.look4sat.ui.adapters +package com.rtbishop.look4sat.ui.entriesScreen import android.view.LayoutInflater import android.view.ViewGroup diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/EntriesFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesFragment.kt similarity index 93% rename from app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/EntriesFragment.kt rename to app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesFragment.kt index 8ef7e867..c3bbff1d 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/EntriesFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesFragment.kt @@ -2,22 +2,22 @@ Look4Sat. Amateur radio satellite tracker and pass predictor. Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com) - This program is free software; you can redistribute it and/or modify +This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, +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 +You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ -package com.rtbishop.look4sat.ui.mainScreen +package com.rtbishop.look4sat.ui.entriesScreen import android.os.Bundle import android.view.View @@ -29,10 +29,9 @@ import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.LinearLayoutManager import com.google.android.material.snackbar.Snackbar import com.rtbishop.look4sat.R -import com.rtbishop.look4sat.SharedViewModel import com.rtbishop.look4sat.data.SatEntry import com.rtbishop.look4sat.databinding.FragmentEntriesBinding -import com.rtbishop.look4sat.ui.adapters.EntriesAdapter +import com.rtbishop.look4sat.ui.SharedViewModel import com.rtbishop.look4sat.utility.RecyclerDivider import dagger.hilt.android.AndroidEntryPoint diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/InfoFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/infoScreen/InfoFragment.kt similarity index 98% rename from app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/InfoFragment.kt rename to app/src/main/java/com/rtbishop/look4sat/ui/infoScreen/InfoFragment.kt index 53a3373e..9d064cd4 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/InfoFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/infoScreen/InfoFragment.kt @@ -17,7 +17,7 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ -package com.rtbishop.look4sat.ui.mainScreen +package com.rtbishop.look4sat.ui.infoScreen import android.content.Intent import android.net.Uri diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/MapFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapFragment.kt similarity index 96% rename from app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/MapFragment.kt rename to app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapFragment.kt index efe9e986..45a5f4be 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/MapFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapFragment.kt @@ -2,22 +2,22 @@ Look4Sat. Amateur radio satellite tracker and pass predictor. Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com) - This program is free software; you can redistribute it and/or modify +This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, +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 +You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ -package com.rtbishop.look4sat.ui.mainScreen +package com.rtbishop.look4sat.ui.mapScreen import android.graphics.Color import android.graphics.ColorMatrix @@ -30,11 +30,11 @@ import androidx.fragment.app.activityViewModels import androidx.fragment.app.viewModels import com.github.amsacode.predict4java.Position import com.rtbishop.look4sat.R -import com.rtbishop.look4sat.SharedViewModel import com.rtbishop.look4sat.data.Result import com.rtbishop.look4sat.data.SatPass import com.rtbishop.look4sat.data.SelectedSat import com.rtbishop.look4sat.databinding.FragmentMapBinding +import com.rtbishop.look4sat.ui.SharedViewModel import com.rtbishop.look4sat.utility.PrefsManager import dagger.hilt.android.AndroidEntryPoint import org.osmdroid.config.Configuration diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/MapViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapViewModel.kt similarity index 99% rename from app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/MapViewModel.kt rename to app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapViewModel.kt index 6eb66bd7..4089d6f4 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/MapViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapViewModel.kt @@ -17,7 +17,7 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ -package com.rtbishop.look4sat.ui.mainScreen +package com.rtbishop.look4sat.ui.mapScreen import android.graphics.Color import android.graphics.Paint diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/adapters/PassesAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesAdapter.kt similarity index 96% rename from app/src/main/java/com/rtbishop/look4sat/ui/adapters/PassesAdapter.kt rename to app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesAdapter.kt index feb1c471..408ff130 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/adapters/PassesAdapter.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesAdapter.kt @@ -2,22 +2,22 @@ Look4Sat. Amateur radio satellite tracker and pass predictor. Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com) - This program is free software; you can redistribute it and/or modify +This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, +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 +You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ -package com.rtbishop.look4sat.ui.adapters +package com.rtbishop.look4sat.ui.passesScreen import android.content.Context import android.view.LayoutInflater diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/PassesFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesFragment.kt similarity index 93% rename from app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/PassesFragment.kt rename to app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesFragment.kt index d5e4c273..c9533bf0 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/PassesFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesFragment.kt @@ -2,22 +2,22 @@ Look4Sat. Amateur radio satellite tracker and pass predictor. Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com) - This program is free software; you can redistribute it and/or modify +This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, +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 +You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ -package com.rtbishop.look4sat.ui.mainScreen +package com.rtbishop.look4sat.ui.passesScreen import android.os.Bundle import android.view.View @@ -26,11 +26,10 @@ import androidx.fragment.app.activityViewModels import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.SimpleItemAnimator import com.rtbishop.look4sat.R -import com.rtbishop.look4sat.SharedViewModel import com.rtbishop.look4sat.data.Result import com.rtbishop.look4sat.data.SatPass import com.rtbishop.look4sat.databinding.FragmentPassesBinding -import com.rtbishop.look4sat.ui.adapters.PassesAdapter +import com.rtbishop.look4sat.ui.SharedViewModel import com.rtbishop.look4sat.utility.PrefsManager import com.rtbishop.look4sat.utility.RecyclerDivider import com.rtbishop.look4sat.utility.formatForTimer diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/PolarFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/PolarFragment.kt similarity index 85% rename from app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/PolarFragment.kt rename to app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/PolarFragment.kt index 4964ce6d..07384562 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/PolarFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/PolarFragment.kt @@ -1,23 +1,23 @@ /******************************************************************************* - Look4Sat. Amateur radio satellite tracker and pass predictor. - Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com) +Look4Sat. Amateur radio satellite tracker and pass predictor. +Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com) - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ -package com.rtbishop.look4sat.ui.mainScreen +package com.rtbishop.look4sat.ui.polarScreen import android.content.Context import android.hardware.Sensor @@ -32,12 +32,10 @@ import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.SimpleItemAnimator import com.rtbishop.look4sat.R -import com.rtbishop.look4sat.SharedViewModel import com.rtbishop.look4sat.data.Result import com.rtbishop.look4sat.data.SatPass import com.rtbishop.look4sat.databinding.FragmentPolarBinding -import com.rtbishop.look4sat.ui.adapters.TransAdapter -import com.rtbishop.look4sat.ui.views.PolarView +import com.rtbishop.look4sat.ui.SharedViewModel import com.rtbishop.look4sat.utility.PrefsManager import com.rtbishop.look4sat.utility.RecyclerDivider import com.rtbishop.look4sat.utility.formatForTimer @@ -104,7 +102,7 @@ class PolarFragment : Fragment(R.layout.fragment_polar), SensorEventListener { viewModel.getPasses().observe(viewLifecycleOwner, { result -> if (result is Result.Success) { satPass = result.data[requireArguments().getInt("index")] - polarView = PolarView(requireContext(), satPass) + polarView = PolarView(requireContext()).apply { setPass(satPass) } binding.frame.addView(polarView) observeTransmitters() } diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/views/PolarView.kt b/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/PolarView.kt similarity index 94% rename from app/src/main/java/com/rtbishop/look4sat/ui/views/PolarView.kt rename to app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/PolarView.kt index 567ec378..dc4e877b 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/views/PolarView.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/PolarView.kt @@ -17,7 +17,7 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ -package com.rtbishop.look4sat.ui.views +package com.rtbishop.look4sat.ui.polarScreen import android.content.Context import android.graphics.Canvas @@ -33,12 +33,8 @@ import kotlin.math.cos import kotlin.math.sin class PolarView(context: Context) : View(context) { - - constructor(context: Context, satPass: SatPass) : this(context) { - pass = satPass - } - - private lateinit var pass: SatPass + + private lateinit var satPass: SatPass private val polarWidth = resources.displayMetrics.widthPixels private val polarCenter = polarWidth / 2f private val scale = resources.displayMetrics.density @@ -69,15 +65,19 @@ class PolarView(context: Context) : View(context) { color = ContextCompat.getColor(context, R.color.themeLight) style = Paint.Style.FILL } - + + fun setPass(satPass: SatPass) { + this.satPass = satPass + } + override fun onDraw(canvas: Canvas) { canvas.translate(polarCenter, polarCenter) drawRadarView(canvas) drawRadarText(canvas) - if (!pass.tle.isDeepspace) drawPassTrajectory(canvas, pass) - drawSatellite(canvas, pass) + if (!satPass.tle.isDeepspace) drawPassTrajectory(canvas, satPass) + drawSatellite(canvas, satPass) } - + private fun drawRadarView(cvs: Canvas) { cvs.drawLine(-radius, 0f, radius, 0f, radarPaint) cvs.drawLine(0f, -radius, 0f, radius, radarPaint) diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/adapters/TransAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/TransAdapter.kt similarity index 94% rename from app/src/main/java/com/rtbishop/look4sat/ui/adapters/TransAdapter.kt rename to app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/TransAdapter.kt index 9b72cd29..23034cd6 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/adapters/TransAdapter.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/polarScreen/TransAdapter.kt @@ -2,22 +2,22 @@ Look4Sat. Amateur radio satellite tracker and pass predictor. Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com) - This program is free software; you can redistribute it and/or modify +This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, +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 +You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ -package com.rtbishop.look4sat.ui.adapters +package com.rtbishop.look4sat.ui.polarScreen import android.content.Context import android.view.LayoutInflater diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/PrefsFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/prefsScreen/PrefsFragment.kt similarity index 99% rename from app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/PrefsFragment.kt rename to app/src/main/java/com/rtbishop/look4sat/ui/prefsScreen/PrefsFragment.kt index 4e351346..35269d45 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/PrefsFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/prefsScreen/PrefsFragment.kt @@ -17,7 +17,7 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ -package com.rtbishop.look4sat.ui.mainScreen +package com.rtbishop.look4sat.ui.prefsScreen import android.Manifest import android.content.pm.PackageManager diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/adapters/SourcesAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/ui/sourcesDialog/SourcesAdapter.kt similarity index 79% rename from app/src/main/java/com/rtbishop/look4sat/ui/adapters/SourcesAdapter.kt rename to app/src/main/java/com/rtbishop/look4sat/ui/sourcesDialog/SourcesAdapter.kt index f27d9a61..ffb5c814 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/adapters/SourcesAdapter.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/sourcesDialog/SourcesAdapter.kt @@ -2,22 +2,22 @@ Look4Sat. Amateur radio satellite tracker and pass predictor. Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com) - This program is free software; you can redistribute it and/or modify +This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ -package com.rtbishop.look4sat.ui.adapters +package com.rtbishop.look4sat.ui.sourcesDialog import android.view.LayoutInflater import android.view.ViewGroup diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/SourcesDialog.kt b/app/src/main/java/com/rtbishop/look4sat/ui/sourcesDialog/SourcesDialog.kt similarity index 95% rename from app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/SourcesDialog.kt rename to app/src/main/java/com/rtbishop/look4sat/ui/sourcesDialog/SourcesDialog.kt index 98253a6e..cc5fc89e 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/SourcesDialog.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/sourcesDialog/SourcesDialog.kt @@ -1,23 +1,23 @@ /******************************************************************************* Look4Sat. Amateur radio satellite tracker and pass predictor. Copyright (C) 2019, 2020 Arty Bishop (bishop.arty@gmail.com) - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ -package com.rtbishop.look4sat.ui.mainScreen +package com.rtbishop.look4sat.ui.sourcesDialog import android.os.Bundle import android.view.LayoutInflater @@ -28,10 +28,9 @@ import androidx.appcompat.app.AppCompatDialogFragment import androidx.fragment.app.activityViewModels import androidx.recyclerview.widget.LinearLayoutManager import com.rtbishop.look4sat.R -import com.rtbishop.look4sat.SharedViewModel +import com.rtbishop.look4sat.ui.SharedViewModel import com.rtbishop.look4sat.data.TleSource import com.rtbishop.look4sat.databinding.DialogSourcesBinding -import com.rtbishop.look4sat.ui.adapters.SourcesAdapter import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/SplashDialog.kt b/app/src/main/java/com/rtbishop/look4sat/ui/splashDialog/SplashDialog.kt similarity index 97% rename from app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/SplashDialog.kt rename to app/src/main/java/com/rtbishop/look4sat/ui/splashDialog/SplashDialog.kt index cac061be..1b9250b0 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/SplashDialog.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/splashDialog/SplashDialog.kt @@ -17,7 +17,7 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ******************************************************************************/ -package com.rtbishop.look4sat.ui.mainScreen +package com.rtbishop.look4sat.ui.splashDialog import android.os.Bundle import android.view.LayoutInflater diff --git a/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt b/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt index 38562185..937a7058 100644 --- a/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt +++ b/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt @@ -26,6 +26,7 @@ import com.github.amsacode.predict4java.GroundStationPosition import javax.inject.Inject class PrefsManager @Inject constructor(val preferences: SharedPreferences) { + companion object { const val keyLatitude = "latitude" const val keyLongitude = "longitude" @@ -61,7 +62,6 @@ class PrefsManager @Inject constructor(val preferences: SharedPreferences) { putString(keyLatitude, latitude.toString()) putString(keyLongitude, longitude.toString()) putString(keyAltitude, altitude.toString()) - apply() } } @@ -90,9 +90,6 @@ class PrefsManager @Inject constructor(val preferences: SharedPreferences) { } fun setFirstLaunchDone() { - preferences.edit { - putBoolean(keyIsFirstLaunch, false) - apply() - } + preferences.edit { putBoolean(keyIsFirstLaunch, false) } } } diff --git a/app/src/main/java/com/rtbishop/look4sat/utility/RecyclerDivider.kt b/app/src/main/java/com/rtbishop/look4sat/utility/RecyclerDivider.kt index 7d2c33dc..3877bcdf 100644 --- a/app/src/main/java/com/rtbishop/look4sat/utility/RecyclerDivider.kt +++ b/app/src/main/java/com/rtbishop/look4sat/utility/RecyclerDivider.kt @@ -26,18 +26,19 @@ import androidx.recyclerview.widget.RecyclerView class RecyclerDivider(private val resId: Int) : RecyclerView.ItemDecoration() { override fun onDrawOver(c: Canvas, parent: RecyclerView) { - val divider = ContextCompat.getDrawable(parent.context, resId)!! - val left = parent.paddingLeft - val right = parent.width - parent.paddingRight - parent.adapter?.itemCount?.let { childCount -> - for (i in 0 until childCount) { - if (i == (childCount - 1)) continue - parent.getChildAt(i)?.let { - val params = it.layoutParams as RecyclerView.LayoutParams - val top = it.bottom + params.bottomMargin - val bottom = top + divider.intrinsicHeight - divider.setBounds(left, top, right, bottom) - divider.draw(c) + ContextCompat.getDrawable(parent.context, resId)?.let { drawable -> + val leftPos = parent.paddingLeft + val rightPos = parent.width - parent.paddingRight + parent.adapter?.itemCount?.let { childCount -> + for (i in 0 until childCount) { + if (i == (childCount - 1)) continue + parent.getChildAt(i)?.let { view -> + val params = view.layoutParams as RecyclerView.LayoutParams + val topPos = view.bottom + params.bottomMargin + val bottomPos = topPos + drawable.intrinsicHeight + drawable.setBounds(leftPos, topPos, rightPos, bottomPos) + drawable.draw(c) + } } } } diff --git a/app/src/main/java/com/rtbishop/look4sat/utility/TypeConverters.kt b/app/src/main/java/com/rtbishop/look4sat/utility/RoomConverters.kt similarity index 98% rename from app/src/main/java/com/rtbishop/look4sat/utility/TypeConverters.kt rename to app/src/main/java/com/rtbishop/look4sat/utility/RoomConverters.kt index baee777f..0370cec4 100644 --- a/app/src/main/java/com/rtbishop/look4sat/utility/TypeConverters.kt +++ b/app/src/main/java/com/rtbishop/look4sat/utility/RoomConverters.kt @@ -24,7 +24,7 @@ import com.github.amsacode.predict4java.TLE import com.squareup.moshi.JsonAdapter import com.squareup.moshi.Moshi -object TypeConverters { +object RoomConverters { private lateinit var tleAdapter: JsonAdapter diff --git a/app/src/main/res/layout/fragment_info.xml b/app/src/main/res/layout/fragment_info.xml index 1896154f..6aaf2d64 100644 --- a/app/src/main/res/layout/fragment_info.xml +++ b/app/src/main/res/layout/fragment_info.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".ui.mainScreen.InfoFragment"> + tools:context=".ui.infoScreen.InfoFragment"> + android:name="com.rtbishop.look4sat.ui.prefsScreen.PrefsFragment" />