forked from upstream-mirrors/OpenTracks
ImportActivity offers to open track option (when only one track is imported). Fixes #558.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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…</string>
|
||||
<string name="generic_recording">Recording…</string>
|
||||
|
||||
Reference in New Issue
Block a user