diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportActivity.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportActivity.java index 8bc83ef39..056f542fc 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportActivity.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportActivity.java @@ -16,6 +16,7 @@ package de.dennisguse.opentracks.io.file.importer; +import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.os.Handler; @@ -30,8 +31,10 @@ import androidx.fragment.app.FragmentActivity; import androidx.lifecycle.ViewModelProvider; import de.dennisguse.opentracks.R; +import de.dennisguse.opentracks.TrackRecordedActivity; import de.dennisguse.opentracks.databinding.ImportActivityBinding; import de.dennisguse.opentracks.io.file.ErrorListDialog; +import de.dennisguse.opentracks.util.IntentUtils; /** * An activity to import files from the external storage. @@ -156,6 +159,9 @@ public class ImportActivity extends FragmentActivity { } private void onImportEnded() { + viewBinding.importProgressAlertMsg.setVisibility(View.VISIBLE); + viewBinding.importProgressAlertIcon.setVisibility(View.VISIBLE); + viewBinding.importProgressRightButton.setVisibility(View.VISIBLE); viewBinding.importProgressRightButton.setText(getString(R.string.generic_ok)); viewBinding.importProgressRightButton.setOnClickListener((view) -> { @@ -163,19 +169,37 @@ public class ImportActivity extends FragmentActivity { finish(); }); - viewBinding.importProgressAlertMsg.setVisibility(View.VISIBLE); - viewBinding.importProgressAlertIcon.setVisibility(View.VISIBLE); if (summary.getErrorCount() > 0) { - viewBinding.importProgressLeftButton.setVisibility(View.VISIBLE); - viewBinding.importProgressLeftButton.setText(getString(R.string.generic_show_errors)); - viewBinding.importProgressLeftButton.setOnClickListener((view) -> ErrorListDialog.showDialog(getSupportFragmentManager(), getString(R.string.import_error_list_dialog_title), summary.getFileErrors())); - viewBinding.importProgressAlertIcon.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.ic_report_problem_24)); - String msg = getResources().getQuantityString(R.plurals.generic_completed_with_errors, summary.getErrorCount(), summary.getErrorCount()); - viewBinding.importProgressAlertMsg.setText(msg); + toggleUIEndWithErrors(); } else { - viewBinding.importProgressLeftButton.setVisibility(View.GONE); - viewBinding.importProgressAlertIcon.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.ic_dialog_success_24dp)); - viewBinding.importProgressAlertMsg.setText(getString(R.string.generic_completed)); + toggleUIEndOk(); } } -} + + private void toggleUIEndWithErrors() { + viewBinding.importProgressLeftButton.setVisibility(View.VISIBLE); + viewBinding.importProgressLeftButton.setText(getString(R.string.generic_show_errors)); + viewBinding.importProgressLeftButton.setOnClickListener((view) -> ErrorListDialog.showDialog(getSupportFragmentManager(), getString(R.string.import_error_list_dialog_title), summary.getFileErrors())); + viewBinding.importProgressAlertIcon.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.ic_report_problem_24)); + viewBinding.importProgressAlertMsg.setText(getResources().getQuantityString(R.plurals.generic_completed_with_errors, summary.getErrorCount(), summary.getErrorCount())); + } + + private void toggleUIEndOk() { + viewBinding.importProgressAlertIcon.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.ic_dialog_success_24dp)); + viewBinding.importProgressAlertMsg.setText(getString(R.string.generic_completed)); + + if (summary.getTotalCount() == 1 && summary.getImportedTrackIds().size() == 1) { + viewBinding.importProgressLeftButton.setVisibility(View.VISIBLE); + viewBinding.importProgressLeftButton.setText(getString(R.string.generic_open_track)); + viewBinding.importProgressLeftButton.setOnClickListener((view) -> { + Intent newIntent = IntentUtils.newIntent(ImportActivity.this, TrackRecordedActivity.class) + .putExtra(TrackRecordedActivity.EXTRA_TRACK_ID, summary.getImportedTrackIds().get(0)); + startActivity(newIntent); + getViewModelStore().clear(); + finish(); + }); + } else { + viewBinding.importProgressLeftButton.setVisibility(View.GONE); + } + } +} \ No newline at end of file diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportViewModel.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportViewModel.java index 6024bdb03..da16b2f57 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportViewModel.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportViewModel.java @@ -14,6 +14,7 @@ import java.util.ArrayList; import java.util.List; import de.dennisguse.opentracks.R; +import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.util.FileUtils; public class ImportViewModel extends AndroidViewModel implements ImportServiceResultReceiver.Receiver { @@ -65,6 +66,7 @@ public class ImportViewModel extends AndroidViewModel implements ImportServiceRe throw new RuntimeException(TAG + ": onReceiveResult resultData NULL"); } + Track.Id trackId = resultData.getParcelable(ImportServiceResultReceiver.RESULT_EXTRA_TRACK_ID); String fileName = resultData.getString(ImportServiceResultReceiver.RESULT_EXTRA_FILENAME); String message = resultData.getString(ImportServiceResultReceiver.RESULT_EXTRA_MESSAGE); @@ -74,6 +76,7 @@ public class ImportViewModel extends AndroidViewModel implements ImportServiceRe summary.fileErrors.add(getApplication().getString(R.string.import_error_info, fileName, message)); break; case ImportServiceResultReceiver.RESULT_CODE_IMPORTED: + summary.importedTrackIds.add(trackId); summary.successCount++; break; case ImportServiceResultReceiver.RESULT_CODE_ALREADY_EXISTS: @@ -92,6 +95,7 @@ public class ImportViewModel extends AndroidViewModel implements ImportServiceRe private int successCount; private int existsCount; private int errorCount; + private ArrayList importedTrackIds = new ArrayList<>(); private final ArrayList fileErrors = new ArrayList<>(); public int getTotalCount() { @@ -110,6 +114,10 @@ public class ImportViewModel extends AndroidViewModel implements ImportServiceRe return errorCount; } + public ArrayList getImportedTrackIds() { + return importedTrackIds; + } + public ArrayList getFileErrors() { return fileErrors; } diff --git a/src/main/res/values-cs/strings.xml b/src/main/res/values-cs/strings.xml index a62d00b33..a951fb6ab 100644 --- a/src/main/res/values-cs/strings.xml +++ b/src/main/res/values-cs/strings.xml @@ -547,10 +547,6 @@ Pokud zařízení GPS hlásí nepřesná data (např. Polohu, rychlost, nadmořs GPS vypnuto GPS zaměřeno a připraveno Soubor doc.kml nenalezen v KMZ - Celkem importovaných souborů: %1$d -\n - Importovaných souborů: %2$d -\n - Již existuje: %3$d -\n - Chyb: %4$d Formát souboru pro export/sdílení Na celou obrazovku Při nahrávání využívat celou obrazovku. @@ -583,11 +579,6 @@ Pokud zařízení GPS hlásí nepřesná data (např. Polohu, rychlost, nadmořs Export po ukončení aktivity selhal, zkontrolujte prosím adresář pro export. Ztráta Trasa %1$s již existuje v cílovém adresáři. - Celkem exportovaných tras: %1$d -\n - Nových exportovaných tras: %2$d -\n - Přepsaných tras: %3$d -\n - Přeskočených tras: %4$d -\n - Chyb: %5$d Přepsat Zobrazit chyby Opakovaně kliknout zpět pro ukončení diff --git a/src/main/res/values-es/strings.xml b/src/main/res/values-es/strings.xml index 93b16be25..00e8fbab5 100644 --- a/src/main/res/values-es/strings.xml +++ b/src/main/res/values-es/strings.xml @@ -586,11 +586,6 @@ g) haz lo que creas que ayude a OpenTracks. Carpeta de pistas exportadas Abrir con OpenTracks-Dashboard La pista %1$s ya existe en la carpeta de destino. - Total de pistas exportadas: %1$d -\n - Nuevas pistas exportadas: %2$d -\n - Pistas sobreescritas: %3$d -\n - Pistas ignoradas: %4$d -\n - Errores: %5$d Sobreescribe Clic otra vez para cancelar GPS desactivado @@ -598,10 +593,6 @@ g) haz lo que creas que ayude a OpenTracks. Formato no soportado Error al analizar: %1$s No se ha podido importar el fichero: %1$s - Total de ficheros importados: %1$d -\n - Ficheros importados: %2$d -\n - Ya existen: %3$d -\n - Errores: %4$d Formato para exportar/compartir Pantalla completa No hay intervalos todavía diff --git a/src/main/res/values-gl/strings.xml b/src/main/res/values-gl/strings.xml index 1e9b05d03..5829d1d5b 100644 --- a/src/main/res/values-gl/strings.xml +++ b/src/main/res/values-gl/strings.xml @@ -580,20 +580,11 @@ Se te detés ou estás en interiores, non se gardarán datos do sensor (mais ser Exportación instantánea tras o adestramento Directorio onde exportar as rutas A ruta %1$s xa existe no directorio de destino. - Total de rutas exportadas: %1$d -\n- Novas pistas: %2$d -\n- Pistas sobrescritas: %3$d -\n- Pistas omitidas: %4$d -\n- Erros: %5$d Sobrescribir Completado cun erro Completado con %1$d erros - Total de ficheiros importados: %1$d -\n- Ficheiros importados: %2$d -\n- Xa existentes: %3$d -\n- Erros: %4$d Decorado IU Sistema Intervalos diff --git a/src/main/res/values-it/strings.xml b/src/main/res/values-it/strings.xml index 6fdaa187e..8434ae323 100644 --- a/src/main/res/values-it/strings.xml +++ b/src/main/res/values-it/strings.xml @@ -548,10 +548,6 @@ Infatti, un\'applicazione deve supportare ACTION_VIEW con MIME applica Premi il tasto indietro di nuovo per annullare GPS pronto e corretto - File importati: %1$d, di cui -\n - %2$d nuovi -\n - %3$d già esistenti -\n - %4$d errori Inserisci un immagine dalla galleria OpenTracks richiede il permesso di utilizzare il GPS. Formato file nell\' esportazione/condivisione @@ -559,11 +555,6 @@ Infatti, un\'applicazione deve supportare ACTION_VIEW con MIME applica Per tipo di attività Esegui ciò per tutti i conflitti Percorsi non esportati - Totale percorsi esportati: %1$d -\n - Nuovi percorsi esportati: %2$d -\n - Percorsi sovrascritti: %3$d -\n - Percorsi saltati: %4$d -\n - Errori avvenuti: %5$d Sovrascrivere Saltare / diff --git a/src/main/res/values-nb/strings.xml b/src/main/res/values-nb/strings.xml index a73008c20..940b9fd62 100644 --- a/src/main/res/values-nb/strings.xml +++ b/src/main/res/values-nb/strings.xml @@ -521,16 +521,7 @@ limitations under the License. Installer en app som støtter presentasjon av kartdata. med bilder Sporet %1$s finnes allerede i målmappen. - Totalt eksporterte spor: %1$d -\n - Nye spor eksportert: %2$d -\n - Spor overskrevet: %3$d -\n - Spor hoppet over: %4$d -\n - Feil: %5$d Filformatet støttes ikke - Totalt importerte filer: %1$d -\n - Filer importert: %2$d -\n - Finnes allerede: %3$d -\n - Feil: %4$d Sett inn galleribilde OpenTracks krever tillatelse til å bruke GPS. Vis statistikk under opptak uten å låse opp enheten. diff --git a/src/main/res/values-pt-rBR/strings.xml b/src/main/res/values-pt-rBR/strings.xml index 0b13d4565..54fa4904f 100644 --- a/src/main/res/values-pt-rBR/strings.xml +++ b/src/main/res/values-pt-rBR/strings.xml @@ -469,21 +469,12 @@ \n g) faça tudo o que você acha que ajuda a OpenTracks. escooter Instale um aplicativo que suporte a apresentação de dados de mapas. - Total de trilhas exportadas: %1$d -\n - Novas trilhas exportadas: %2$d -\n - Trilhas substituídas: %3$d -\n - Trilhas ignoradas: %4$d -\n - Erros: %5$d Concluído com %1$d erro Concluído com %1$d erros Formato de arquivo não suportado Não foi possível importar o arquivo: %1$s - Total de arquivos importados: %1$d -\n - Arquivos importados: %2$d -\n - Já existe: %3$d -\n - Erros: %4$d Cancelado, nenhum marcador de foto adicionado Inserir imagem da galeria Mostrar estatísticas na tela de bloqueio diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index a80889b76..f2e855769 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -245,6 +245,7 @@ limitations under the License. Name: %1$s No OK + Open Track Paused Please wait… Recording…