ExportScreen: "End scan" -> "New scan" + change behavior

This commit is contained in:
Pierre-Yves Nicolas
2026-05-11 20:02:04 +02:00
parent e43da6b9aa
commit 69f5ca0636
16 changed files with 18 additions and 18 deletions

View File

@@ -140,7 +140,7 @@ fun ExportScreenWrapper(
onOpen = pdfActions.open,
onCloseScan = {
if (!uiState.isSaving) {
if (uiState.hasSavedOrShared)
if (uiState.hasSavedOrShared || uiState.isResumedScan)
onCloseScan()
else
showConfirmationDialog.value = true
@@ -149,7 +149,7 @@ fun ExportScreenWrapper(
)
if (showConfirmationDialog.value) {
NewDocumentDialog(onCloseScan, showConfirmationDialog, stringResource(R.string.end_scan))
NewDocumentDialog(onCloseScan, showConfirmationDialog, stringResource(R.string.scan_button))
}
}
@@ -396,7 +396,7 @@ private fun MainActions(
}
ExportButton(
icon = Icons.Default.Done,
text = stringResource(R.string.end_scan),
text = stringResource(R.string.scan_button),
onClick = onCloseScan,
modifier = Modifier.fillMaxWidth(),
isPrimary = uiState.hasSavedOrShared,

View File

@@ -26,6 +26,7 @@ data class ExportUiState(
val savedBundle: SavedBundle? = null,
val hasShared: Boolean = false,
val error: ExportError? = null,
val isResumedScan: Boolean = false,
) {
val hasSavedOrShared get() = savedBundle != null || hasShared
}

View File

@@ -88,6 +88,12 @@ class ExportViewModel(container: AppContainer, val imageRepository: ImageReposit
private val _uiState = MutableStateFlow(ExportUiState())
val uiState: StateFlow<ExportUiState> = _uiState.asStateFlow()
private var resumedScanKeys: List<PageViewKey> = emptyList()
init {
viewModelScope.launch {
resumedScanKeys = currentPageKeys()
}
}
private var lastPreparationKey: ExportPreparationKey? = null
private var preparationJob: Job? = null
@@ -127,7 +133,8 @@ class ExportViewModel(container: AppContainer, val imageRepository: ImageReposit
val exportQuality = settingsRepository.exportQuality.first()
val exportFormat = settingsRepository.exportFormat.first()
val key = ExportPreparationKey(currentPageKeys(), exportFormat, exportQuality)
val currentPageKeys = currentPageKeys()
val key = ExportPreparationKey(currentPageKeys, exportFormat, exportQuality)
if (key == lastPreparationKey) {
return@launch
}
@@ -137,7 +144,12 @@ class ExportViewModel(container: AppContainer, val imageRepository: ImageReposit
preparationJob = launch {
_uiState.update {
ExportUiState(filename = it.filename, format = exportFormat, isGenerating = true)
ExportUiState(
filename = it.filename,
format = exportFormat,
isGenerating = true,
isResumedScan = resumedScanKeys == currentPageKeys
)
}
try {
val t1 = System.currentTimeMillis()

View File

@@ -22,7 +22,6 @@
<string name="developer">مطوّر</string>
<string name="discard_scan">أهمِل المسح</string>
<string name="download_dirname">التنزيلات</string>
<string name="end_scan">أنهِ المسح</string>
<string name="error">خطأ: %1$s</string>
<string name="error_context_folder">مجلد التصدير: %1$s</string>
<string name="error_context_provider">المزود: %1$s</string>

View File

@@ -22,7 +22,6 @@
<string name="developer">Vývojář</string>
<string name="discard_scan">Zrušit skenování</string>
<string name="download_dirname">stažených</string>
<string name="end_scan">Ukončit skenování</string>
<string name="error">Chyba: %1$s</string>
<string name="error_context_folder">Složka exportu: %1$s</string>
<string name="error_context_provider">Poskytovatel: %1$s</string>

View File

@@ -22,7 +22,6 @@
<string name="developer">Entwickler</string>
<string name="discard_scan">Löschen</string>
<string name="download_dirname">Downloads</string>
<string name="end_scan">Scan beenden</string>
<string name="error">Fehler: %1$s</string>
<string name="error_context_folder">Exportordner: %1$s</string>
<string name="error_context_provider">Anbieter: %1$s</string>

View File

@@ -22,7 +22,6 @@
<string name="developer">Desarrollador</string>
<string name="discard_scan">Descartar escaneo</string>
<string name="download_dirname">Descargas</string>
<string name="end_scan">Finalizar escaneo</string>
<string name="error">Error: %1$s</string>
<string name="error_context_folder">Carpeta de exportación: %1$s</string>
<string name="error_context_provider">Proveedor: %1$s</string>

View File

@@ -22,7 +22,6 @@
<string name="developer">Développeur</string>
<string name="discard_scan">Supprimer le scan</string>
<string name="download_dirname">Téléchargements</string>
<string name="end_scan">Terminer le scan</string>
<string name="error">Erreur : %1$s</string>
<string name="error_context_folder">Dossier dexport : %1$s</string>
<string name="error_context_provider">Fournisseur : %1$s</string>

View File

@@ -22,7 +22,6 @@
<string name="developer">Desenvolvedor</string>
<string name="discard_scan">Descartar escaneo</string>
<string name="download_dirname">Descargas</string>
<string name="end_scan">Rematar escaneo</string>
<string name="error">Erro: %1$s</string>
<string name="error_context_folder">Cartafol de exportación: %1$s</string>
<string name="error_context_provider">Provedor: %1$s</string>

View File

@@ -22,7 +22,6 @@
<string name="developer">Sviluppatore</string>
<string name="discard_scan">Scarta scansione</string>
<string name="download_dirname">Download</string>
<string name="end_scan">Termina scansione</string>
<string name="error">Errore: %1$s</string>
<string name="error_context_folder">Cartella di esportazione: %1$s</string>
<string name="error_context_provider">Provider: %1$s</string>

View File

@@ -22,7 +22,6 @@
<string name="developer">Desenvolvedor</string>
<string name="discard_scan">Descartar digitalização</string>
<string name="download_dirname">Downloads</string>
<string name="end_scan">Finalizar digitalização</string>
<string name="error">Erro: %1$s</string>
<string name="error_context_folder">Pasta de exportação: %1$s</string>
<string name="error_context_provider">Provedor: %1$s</string>

View File

@@ -22,7 +22,6 @@
<string name="developer">Разработчик</string>
<string name="discard_scan">Отказаться</string>
<string name="download_dirname">Download</string>
<string name="end_scan">Закончить</string>
<string name="error">Ошибка: %1$s</string>
<string name="error_context_folder">Папка экспорта: %1$s</string>
<string name="error_context_provider">Провайдер: %1$s</string>

View File

@@ -22,7 +22,6 @@
<string name="developer">Geliştirici</string>
<string name="discard_scan">Taramayı at</string>
<string name="download_dirname">İndirilenler</string>
<string name="end_scan">Taramayı bitir</string>
<string name="error">Error: %1$s</string>
<string name="error_context_folder">Dışa aktarma klasörü: %1$s</string>
<string name="error_context_provider">Sağlayıcı: %1$s</string>

View File

@@ -22,7 +22,6 @@
<string name="developer">開發者</string>
<string name="discard_scan">捨棄掃描</string>
<string name="download_dirname">下載 (Downloads)</string>
<string name="end_scan">結束掃描</string>
<string name="error">錯誤:%1$s</string>
<string name="error_context_folder">匯出資料夾:%1$s</string>
<string name="error_context_provider">提供者:%1$s</string>

View File

@@ -22,7 +22,6 @@
<string name="developer">开发者</string>
<string name="discard_scan">放弃扫描</string>
<string name="download_dirname">下载</string>
<string name="end_scan">结束扫描</string>
<string name="error">错误: %1$s</string>
<string name="error_context_folder">导出文件夹:%1$s</string>
<string name="error_context_provider">提供方:%1$s</string>

View File

@@ -23,7 +23,6 @@
<string name="developer">Developer</string>
<string name="discard_scan">Discard scan</string>
<string name="download_dirname">Downloads</string>
<string name="end_scan">End scan</string>
<string name="error">Error: %1$s</string>
<string name="error_context_folder">Export folder: %1$s</string>
<string name="error_context_provider">Provider: %1$s</string>