ImportActivity offers to open track option (when only one track is imported). Fixes #558.

This commit is contained in:
Román Martínez
2021-01-10 16:23:02 +01:00
parent f1d791a62c
commit 860df0197e
9 changed files with 45 additions and 66 deletions
@@ -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);
}
}
}
@@ -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<Track.Id> importedTrackIds = new ArrayList<>();
private final ArrayList<String> fileErrors = new ArrayList<>();
public int getTotalCount() {
@@ -110,6 +114,10 @@ public class ImportViewModel extends AndroidViewModel implements ImportServiceRe
return errorCount;
}
public ArrayList<Track.Id> getImportedTrackIds() {
return importedTrackIds;
}
public ArrayList<String> getFileErrors() {
return fileErrors;
}
-9
View File
@@ -547,10 +547,6 @@ Pokud zařízení GPS hlásí nepřesná data (např. Polohu, rychlost, nadmořs
<string name="gps_disabled_msg">GPS vypnuto</string>
<string name="gps_fixed_and_ready">GPS zaměřeno a připraveno</string>
<string name="import_no_kml_file_found">Soubor doc.kml nenalezen v KMZ</string>
<string name="import_progress_review">Celkem importovaných souborů: %1$d
\n - Importovaných souborů: %2$d
\n - Již existuje: %3$d
\n - Chyb: %4$d</string>
<string name="settings_default_trackfileformat">Formát souboru pro export/sdílení</string>
<string name="settings_recording_fullscreen_on_while_recording_title">Na celou obrazovku</string>
<string name="settings_recording_fullscreen_on_while_recording_summary">Při nahrávání využívat celou obrazovku.</string>
@@ -583,11 +579,6 @@ Pokud zařízení GPS hlásí nepřesná data (např. Polohu, rychlost, nadmořs
<string name="export_error_post_workout">Export po ukončení aktivity selhal, zkontrolujte prosím adresář pro export.</string>
<string name="stats_loss">Ztráta</string>
<string name="export_track_already_exists_msg">Trasa %1$s již existuje v cílovém adresáři.</string>
<string name="export_progress_review">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</string>
<string name="generic_overwrite">Přepsat</string>
<string name="generic_show_errors">Zobrazit chyby</string>
<string name="generic_click_twice_cancel">Opakovaně kliknout zpět pro ukončení</string>
-9
View File
@@ -586,11 +586,6 @@ g) haz lo que creas que ayude a OpenTracks.</string>
<string name="settings_default_export_uri_title">Carpeta de pistas exportadas</string>
<string name="open_track_using_dashboard">Abrir con OpenTracks-Dashboard</string>
<string name="export_track_already_exists_msg">La pista %1$s ya existe en la carpeta de destino.</string>
<string name="export_progress_review">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</string>
<string name="generic_overwrite">Sobreescribe</string>
<string name="generic_click_twice_cancel">Clic otra vez para cancelar</string>
<string name="gps_disabled_msg">GPS desactivado</string>
@@ -598,10 +593,6 @@ g) haz lo que creas que ayude a OpenTracks.</string>
<string name="import_unsupported_format">Formato no soportado</string>
<string name="import_parser_error">Error al analizar: %1$s</string>
<string name="import_unable_to_import_file">No se ha podido importar el fichero: %1$s</string>
<string name="import_progress_review">Total de ficheros importados: %1$d
\n - Ficheros importados: %2$d
\n - Ya existen: %3$d
\n - Errores: %4$d</string>
<string name="settings_default_trackfileformat">Formato para exportar/compartir</string>
<string name="settings_recording_fullscreen_on_while_recording_title">Pantalla completa</string>
<string name="interval_list_empty_message">No hay intervalos todavía</string>
-9
View File
@@ -580,20 +580,11 @@ Se te detés ou estás en interiores, non se gardarán datos do sensor (mais ser
<string name="instant_export_enabled_title">Exportación instantánea tras o adestramento</string>
<string name="settings_default_export_uri_title">Directorio onde exportar as rutas</string>
<string name="export_track_already_exists_msg">A ruta %1$s xa existe no directorio de destino.</string>
<string name="export_progress_review">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</string>
<string name="generic_overwrite">Sobrescribir</string>
<plurals name="generic_completed_with_errors">
<item quantity="one">Completado cun erro</item>
<item quantity="other">Completado con %1$d erros</item>
</plurals>
<string name="import_progress_review">Total de ficheiros importados: %1$d
\n- Ficheiros importados: %2$d
\n- Xa existentes: %3$d
\n- Erros: %4$d</string>
<string name="settings_night_mode_title">Decorado IU</string>
<string name="settings_night_mode_option_system">Sistema</string>
<string name="stats_intervals">Intervalos</string>
-9
View File
@@ -548,10 +548,6 @@ Infatti, un\'applicazione deve supportare <i>ACTION_VIEW</i> con MIME <i>applica
</plurals>
<string name="generic_click_twice_cancel">Premi il tasto indietro di nuovo per annullare</string>
<string name="gps_fixed_and_ready">GPS pronto e corretto</string>
<string name="import_progress_review">File importati: %1$d, di cui
\n - %2$d nuovi
\n - %3$d già esistenti
\n - %4$d errori</string>
<string name="menu_insert_gallery_img">Inserisci un immagine dalla galleria</string>
<string name="permission_gps_failed">OpenTracks richiede il permesso di utilizzare il GPS.</string>
<string name="settings_default_trackfileformat">Formato file nell\' esportazione/condivisione</string>
@@ -559,11 +555,6 @@ Infatti, un\'applicazione deve supportare <i>ACTION_VIEW</i> con MIME <i>applica
<string name="description_default_speed_or_pace">Per tipo di attività</string>
<string name="export_all_do_it_for_all">Esegui ciò per tutti i conflitti</string>
<string name="export_track_errors">Percorsi non esportati</string>
<string name="export_progress_review">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</string>
<string name="generic_overwrite">Sovrascrivere</string>
<string name="generic_skip">Saltare</string>
<string name="generic_separator_done_total">/</string>
-9
View File
@@ -521,16 +521,7 @@ limitations under the License.
<string name="app_not_installed_show_on_map">Installer en app som støtter presentasjon av kartdata.</string>
<string name="export_with_photos">med bilder</string>
<string name="export_track_already_exists_msg">Sporet %1$s finnes allerede i målmappen.</string>
<string name="export_progress_review">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</string>
<string name="import_unsupported_format">Filformatet støttes ikke</string>
<string name="import_progress_review">Totalt importerte filer: %1$d
\n - Filer importert: %2$d
\n - Finnes allerede: %3$d
\n - Feil: %4$d</string>
<string name="menu_insert_gallery_img">Sett inn galleribilde</string>
<string name="permission_gps_failed">OpenTracks krever tillatelse til å bruke GPS.</string>
<string name="settings_recording_show_on_lockscreen_while_recording_summary">Vis statistikk under opptak uten å låse opp enheten.</string>
-9
View File
@@ -469,21 +469,12 @@
\n g) faça tudo o que você acha que ajuda a OpenTracks. </string>
<string name="activity_type_escooter">escooter</string>
<string name="app_not_installed_show_on_map">Instale um aplicativo que suporte a apresentação de dados de mapas.</string>
<string name="export_progress_review">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</string>
<plurals name="generic_completed_with_errors">
<item quantity="one">Concluído com %1$d erro</item>
<item quantity="other">Concluído com %1$d erros</item>
</plurals>
<string name="import_unsupported_format">Formato de arquivo não suportado</string>
<string name="import_unable_to_import_file">Não foi possível importar o arquivo: %1$s</string>
<string name="import_progress_review">Total de arquivos importados: %1$d
\n - Arquivos importados: %2$d
\n - Já existe: %3$d
\n - Erros: %4$d</string>
<string name="marker_add_photo_canceled">Cancelado, nenhum marcador de foto adicionado</string>
<string name="menu_insert_gallery_img">Inserir imagem da galeria</string>
<string name="settings_recording_show_on_lockscreen_while_recording_title">Mostrar estatísticas na tela de bloqueio</string>
+1
View File
@@ -245,6 +245,7 @@ limitations under the License.
<string name="generic_name_line">Name: %1$s</string>
<string name="generic_no">No</string>
<string name="generic_ok">OK</string>
<string name="generic_open_track">Open Track</string>
<string name="generic_paused">Paused</string>
<string name="generic_progress_title">Please wait&#8230;</string>
<string name="generic_recording">Recording&#8230;</string>