Reorg: move ImageRepository and PdfFileManager to data
This commit is contained in:
@@ -46,6 +46,7 @@ import kotlinx.coroutines.Dispatchers
|
|||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.suspendCancellableCoroutine
|
import kotlinx.coroutines.suspendCancellableCoroutine
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
import org.fairscan.app.data.GeneratedPdf
|
||||||
import org.fairscan.app.ui.theme.FairScanTheme
|
import org.fairscan.app.ui.theme.FairScanTheme
|
||||||
import org.fairscan.app.view.AboutScreen
|
import org.fairscan.app.view.AboutScreen
|
||||||
import org.fairscan.app.view.CameraScreen
|
import org.fairscan.app.view.CameraScreen
|
||||||
|
|||||||
@@ -39,6 +39,9 @@ import kotlinx.coroutines.flow.stateIn
|
|||||||
import kotlinx.coroutines.flow.update
|
import kotlinx.coroutines.flow.update
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
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.data.recentDocumentsDataStore
|
||||||
import org.fairscan.app.domain.ImageSegmentationService
|
import org.fairscan.app.domain.ImageSegmentationService
|
||||||
import org.fairscan.app.domain.detectDocumentQuad
|
import org.fairscan.app.domain.detectDocumentQuad
|
||||||
@@ -71,7 +74,8 @@ class MainViewModel(
|
|||||||
PdfFileManager(
|
PdfFileManager(
|
||||||
File(context.cacheDir, "pdfs"),
|
File(context.cacheDir, "pdfs"),
|
||||||
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),
|
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),
|
||||||
AndroidPdfWriter()),
|
AndroidPdfWriter()
|
||||||
|
),
|
||||||
context.recentDocumentsDataStore,
|
context.recentDocumentsDataStore,
|
||||||
) as T
|
) 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
|
// TODO Move somewhere else: ViewModel should not depend on that
|
||||||
data class PdfGenerationActions(
|
data class PdfGenerationActions(
|
||||||
val startGeneration: () -> Unit,
|
val startGeneration: () -> Unit,
|
||||||
|
|||||||
@@ -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.PDPageContentStream.AppendMode
|
||||||
import com.tom_roush.pdfbox.pdmodel.common.PDRectangle
|
import com.tom_roush.pdfbox.pdmodel.common.PDRectangle
|
||||||
import com.tom_roush.pdfbox.pdmodel.graphics.image.JPEGFactory
|
import com.tom_roush.pdfbox.pdmodel.graphics.image.JPEGFactory
|
||||||
|
import org.fairscan.app.data.PdfWriter
|
||||||
import java.io.OutputStream
|
import java.io.OutputStream
|
||||||
|
|
||||||
class AndroidPdfWriter : PdfWriter {
|
class AndroidPdfWriter : PdfWriter {
|
||||||
|
|||||||
@@ -12,13 +12,12 @@
|
|||||||
* You should have received a copy of the GNU General Public License along with
|
* You should have received a copy of the GNU General Public License along with
|
||||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package org.fairscan.app
|
package org.fairscan.app.data
|
||||||
|
|
||||||
import kotlinx.collections.immutable.ImmutableList
|
import kotlinx.collections.immutable.ImmutableList
|
||||||
import kotlinx.collections.immutable.toImmutableList
|
import kotlinx.collections.immutable.toImmutableList
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import org.fairscan.app.data.DocumentMetadata
|
import org.fairscan.app.ImageTransformations
|
||||||
import org.fairscan.app.data.Page
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
const val SCAN_DIR_NAME = "scanned_pages"
|
const val SCAN_DIR_NAME = "scanned_pages"
|
||||||
@@ -12,12 +12,18 @@
|
|||||||
* You should have received a copy of the GNU General Public License along with
|
* You should have received a copy of the GNU General Public License along with
|
||||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package org.fairscan.app
|
package org.fairscan.app.data
|
||||||
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.FileOutputStream
|
import java.io.FileOutputStream
|
||||||
import java.io.OutputStream
|
import java.io.OutputStream
|
||||||
|
|
||||||
|
data class GeneratedPdf(
|
||||||
|
val file: File,
|
||||||
|
val sizeInBytes: Long,
|
||||||
|
val pageCount: Int,
|
||||||
|
)
|
||||||
|
|
||||||
fun interface PdfWriter {
|
fun interface PdfWriter {
|
||||||
fun writePdfFromJpegs(jpegs: Sequence<ByteArray>, outputStream: OutputStream): Int
|
fun writePdfFromJpegs(jpegs: Sequence<ByteArray>, outputStream: OutputStream): Int
|
||||||
}
|
}
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
package org.fairscan.app.ui
|
package org.fairscan.app.ui
|
||||||
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import org.fairscan.app.GeneratedPdf
|
import org.fairscan.app.data.GeneratedPdf
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
data class PdfGenerationUiState(
|
data class PdfGenerationUiState(
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ import androidx.compose.ui.text.font.FontStyle
|
|||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.core.net.toUri
|
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.Navigation
|
||||||
import org.fairscan.app.PdfGenerationActions
|
import org.fairscan.app.PdfGenerationActions
|
||||||
import org.fairscan.app.R
|
import org.fairscan.app.R
|
||||||
|
|||||||
@@ -12,9 +12,10 @@
|
|||||||
* You should have received a copy of the GNU General Public License along with
|
* You should have received a copy of the GNU General Public License along with
|
||||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package org.fairscan.app
|
package org.fairscan.app.data
|
||||||
|
|
||||||
import org.assertj.core.api.Assertions.assertThat
|
import org.assertj.core.api.Assertions.assertThat
|
||||||
|
import org.fairscan.app.ImageTransformations
|
||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.rules.TemporaryFolder
|
import org.junit.rules.TemporaryFolder
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License along with
|
* You should have received a copy of the GNU General Public License along with
|
||||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package org.fairscan.app
|
package org.fairscan.app.data
|
||||||
|
|
||||||
import org.assertj.core.api.Assertions.assertThat
|
import org.assertj.core.api.Assertions.assertThat
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
Reference in New Issue
Block a user