diff --git a/app/src/main/java/org/fairscan/app/MainActivity.kt b/app/src/main/java/org/fairscan/app/MainActivity.kt index 75d1e13..0b3c652 100644 --- a/app/src/main/java/org/fairscan/app/MainActivity.kt +++ b/app/src/main/java/org/fairscan/app/MainActivity.kt @@ -46,6 +46,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.suspendCancellableCoroutine import kotlinx.coroutines.withContext +import org.fairscan.app.data.GeneratedPdf import org.fairscan.app.ui.theme.FairScanTheme import org.fairscan.app.view.AboutScreen import org.fairscan.app.view.CameraScreen diff --git a/app/src/main/java/org/fairscan/app/MainViewModel.kt b/app/src/main/java/org/fairscan/app/MainViewModel.kt index 97f3a5e..8005bef 100644 --- a/app/src/main/java/org/fairscan/app/MainViewModel.kt +++ b/app/src/main/java/org/fairscan/app/MainViewModel.kt @@ -39,6 +39,9 @@ import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import org.fairscan.app.data.GeneratedPdf +import org.fairscan.app.data.ImageRepository +import org.fairscan.app.data.PdfFileManager import org.fairscan.app.data.recentDocumentsDataStore import org.fairscan.app.domain.ImageSegmentationService import org.fairscan.app.domain.detectDocumentQuad @@ -71,7 +74,8 @@ class MainViewModel( PdfFileManager( File(context.cacheDir, "pdfs"), Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), - AndroidPdfWriter()), + AndroidPdfWriter() + ), context.recentDocumentsDataStore, ) as T } @@ -385,12 +389,6 @@ class MainViewModel( } } -data class GeneratedPdf( - val file: File, - val sizeInBytes: Long, - val pageCount: Int, -) - // TODO Move somewhere else: ViewModel should not depend on that data class PdfGenerationActions( val startGeneration: () -> Unit, diff --git a/app/src/main/java/org/fairscan/app/PdfGeneration.kt b/app/src/main/java/org/fairscan/app/PdfGeneration.kt index 683a1ed..8ac8dc8 100644 --- a/app/src/main/java/org/fairscan/app/PdfGeneration.kt +++ b/app/src/main/java/org/fairscan/app/PdfGeneration.kt @@ -20,6 +20,7 @@ import com.tom_roush.pdfbox.pdmodel.PDPageContentStream import com.tom_roush.pdfbox.pdmodel.PDPageContentStream.AppendMode import com.tom_roush.pdfbox.pdmodel.common.PDRectangle import com.tom_roush.pdfbox.pdmodel.graphics.image.JPEGFactory +import org.fairscan.app.data.PdfWriter import java.io.OutputStream class AndroidPdfWriter : PdfWriter { diff --git a/app/src/main/java/org/fairscan/app/ImageRepository.kt b/app/src/main/java/org/fairscan/app/data/ImageRepository.kt similarity index 98% rename from app/src/main/java/org/fairscan/app/ImageRepository.kt rename to app/src/main/java/org/fairscan/app/data/ImageRepository.kt index da816c9..45be75e 100644 --- a/app/src/main/java/org/fairscan/app/ImageRepository.kt +++ b/app/src/main/java/org/fairscan/app/data/ImageRepository.kt @@ -12,13 +12,12 @@ * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ -package org.fairscan.app +package org.fairscan.app.data import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList import kotlinx.serialization.json.Json -import org.fairscan.app.data.DocumentMetadata -import org.fairscan.app.data.Page +import org.fairscan.app.ImageTransformations import java.io.File const val SCAN_DIR_NAME = "scanned_pages" diff --git a/app/src/main/java/org/fairscan/app/PdfFileManager.kt b/app/src/main/java/org/fairscan/app/data/PdfFileManager.kt similarity index 95% rename from app/src/main/java/org/fairscan/app/PdfFileManager.kt rename to app/src/main/java/org/fairscan/app/data/PdfFileManager.kt index 76bd8ee..5ab082f 100644 --- a/app/src/main/java/org/fairscan/app/PdfFileManager.kt +++ b/app/src/main/java/org/fairscan/app/data/PdfFileManager.kt @@ -12,12 +12,18 @@ * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ -package org.fairscan.app +package org.fairscan.app.data import java.io.File import java.io.FileOutputStream import java.io.OutputStream +data class GeneratedPdf( + val file: File, + val sizeInBytes: Long, + val pageCount: Int, +) + fun interface PdfWriter { fun writePdfFromJpegs(jpegs: Sequence, outputStream: OutputStream): Int } diff --git a/app/src/main/java/org/fairscan/app/ui/UiState.kt b/app/src/main/java/org/fairscan/app/ui/UiState.kt index ea70277..250fce4 100644 --- a/app/src/main/java/org/fairscan/app/ui/UiState.kt +++ b/app/src/main/java/org/fairscan/app/ui/UiState.kt @@ -15,7 +15,7 @@ package org.fairscan.app.ui import android.net.Uri -import org.fairscan.app.GeneratedPdf +import org.fairscan.app.data.GeneratedPdf import java.io.File data class PdfGenerationUiState( diff --git a/app/src/main/java/org/fairscan/app/view/ExportScreen.kt b/app/src/main/java/org/fairscan/app/view/ExportScreen.kt index 6a1fe04..72f30d0 100644 --- a/app/src/main/java/org/fairscan/app/view/ExportScreen.kt +++ b/app/src/main/java/org/fairscan/app/view/ExportScreen.kt @@ -66,7 +66,7 @@ import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.core.net.toUri -import org.fairscan.app.GeneratedPdf +import org.fairscan.app.data.GeneratedPdf import org.fairscan.app.Navigation import org.fairscan.app.PdfGenerationActions import org.fairscan.app.R diff --git a/app/src/test/java/org/fairscan/app/ImageRepositoryTest.kt b/app/src/test/java/org/fairscan/app/data/ImageRepositoryTest.kt similarity index 98% rename from app/src/test/java/org/fairscan/app/ImageRepositoryTest.kt rename to app/src/test/java/org/fairscan/app/data/ImageRepositoryTest.kt index 0b99b68..3989c25 100644 --- a/app/src/test/java/org/fairscan/app/ImageRepositoryTest.kt +++ b/app/src/test/java/org/fairscan/app/data/ImageRepositoryTest.kt @@ -12,9 +12,10 @@ * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ -package org.fairscan.app +package org.fairscan.app.data import org.assertj.core.api.Assertions.assertThat +import org.fairscan.app.ImageTransformations import org.junit.Rule import org.junit.Test import org.junit.rules.TemporaryFolder diff --git a/app/src/test/java/org/fairscan/app/PdfFileManagerTest.kt b/app/src/test/java/org/fairscan/app/data/PdfFileManagerTest.kt similarity index 99% rename from app/src/test/java/org/fairscan/app/PdfFileManagerTest.kt rename to app/src/test/java/org/fairscan/app/data/PdfFileManagerTest.kt index 0172a42..3d4e11c 100644 --- a/app/src/test/java/org/fairscan/app/PdfFileManagerTest.kt +++ b/app/src/test/java/org/fairscan/app/data/PdfFileManagerTest.kt @@ -12,7 +12,7 @@ * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ -package org.fairscan.app +package org.fairscan.app.data import org.assertj.core.api.Assertions.assertThat import org.junit.Test