diff --git a/MyTracks/res/layout/send_to_google_result.xml b/MyTracks/res/layout/send_to_google_result.xml index 32b7078d7..e457935cf 100644 --- a/MyTracks/res/layout/send_to_google_result.xml +++ b/MyTracks/res/layout/send_to_google_result.xml @@ -59,7 +59,7 @@ services. android:id="@+id/send_to_google_result_error" android:layout_width="fill_parent" android:layout_height="wrap_content" - android:text="@string/error_generic" + android:text="@string/error_sending_to_google" android:visibility="gone" style="?android:attr/textAppearanceLarge"/> diff --git a/MyTracks/res/values-ca/strings.xml b/MyTracks/res/values-ca/strings.xml index 51fb413f7..c2fd21da0 100644 --- a/MyTracks/res/values-ca/strings.xml +++ b/MyTracks/res/values-ca/strings.xml @@ -41,7 +41,7 @@ limitations under the License. No es pot aturar l\'enregistrament. Proveu de nou. No es pot llegir des del fitxer. El fitxer no conté un format GPX vàlid. - S\'ha produït un error. Proveu de nou. + S\'ha produït un error. Proveu de nou. No existeix la ruta. Aquest fitxer és massa gran (ha d\'ésser inferior a 500KB. S\'està cancel·lant. No es pot inserir un marcador. No hi ha cap ubicació fixa disponible. diff --git a/MyTracks/res/values-de/strings.xml b/MyTracks/res/values-de/strings.xml index 651355bbc..4f0499e5a 100644 --- a/MyTracks/res/values-de/strings.xml +++ b/MyTracks/res/values-de/strings.xml @@ -41,7 +41,7 @@ limitations under the License. Anhalten unmöglich. Bitte versuche es noch einmal. Konnte Datei nicht lesen. Datei ist nicht im GPX-Format. - Ein Fehler ist aufgetreten. Bitte versuche es noch einmal. + Ein Fehler ist aufgetreten. Bitte versuche es noch einmal. Track existiert nicht. Die Datei ist zu groß (maximal 500 KB). Operation abgebrochen. Der Wegpunkt kann nicht einfügt werden. Keine Positionsbestimmung möglich. diff --git a/MyTracks/res/values-es/strings.xml b/MyTracks/res/values-es/strings.xml index 6778d2007..d66de8e07 100644 --- a/MyTracks/res/values-es/strings.xml +++ b/MyTracks/res/values-es/strings.xml @@ -43,7 +43,7 @@ limitations under the License. No se puede detener la grabación. Inténtelo de nuevo. No pude leer del archivo. El archivo no tiene un format GPX válido. - A ocurrido un error. Por favor, inténtelo de nuevo. + A ocurrido un error. Por favor, inténtelo de nuevo. El recorrido no existe. La operación fue cancelada. El archivo es demasiado grande (tiene que ser menor a 500 KB). Abortando. diff --git a/MyTracks/res/values/strings.xml b/MyTracks/res/values/strings.xml index 3ca780378..6cbd1f8f5 100644 --- a/MyTracks/res/values/strings.xml +++ b/MyTracks/res/values/strings.xml @@ -86,14 +86,12 @@ limitations under the License. Unable to insert marker. No GPS location. Try again. - - + + An error occurred. Please try again. - - @@ -108,27 +106,8 @@ limitations under the License. translation_description="When sending a track to Google Docs, a message indicating that an error has occurred."> There was an error while sending your track to Google Docs. - - - - - Unable to read from file. - - - File does not have a valid GPX format. - - - - - This file is too big (must be less than 500 KB). Aborting. - - + + - Importing a track from the SD card. This may take a while. - + @@ -528,7 +502,7 @@ limitations under the License. - Imported %1$d of %2$d GPX files from %3$s + Imported to My Tracks %1$d of %2$d GPX files from %3$s Import error for file %s - - Successfully imported %d track(s) from file. - - - Show track - getGpxFiles() { - List gpxFiles = new LinkedList(); - File[] gpxFileCandidates = new File(gpxPath).listFiles(); - if (gpxFileCandidates != null) { - for (File file : gpxFileCandidates) { - if (!file.isDirectory() && file.getName().endsWith(".gpx")) { - gpxFiles.add(file); + List gpxFiles = new LinkedList(); + File file = new File(gpxPath); + if (displayTrack) { + gpxFiles.add(file); + } else { + File[] gpxFileCandidates = file.listFiles(); + if (gpxFileCandidates != null) { + for (File candidate : gpxFileCandidates) { + if (!candidate.isDirectory() && candidate.getName().endsWith(".gpx")) { + gpxFiles.add(candidate); + } } } } diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/file/ImportActivity.java b/MyTracks/src/com/google/android/apps/mytracks/io/file/ImportActivity.java index f6323aba3..027e35002 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/io/file/ImportActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/io/file/ImportActivity.java @@ -17,56 +17,21 @@ package com.google.android.apps.mytracks.io.file; import static com.google.android.apps.mytracks.Constants.TAG; -import com.google.android.apps.mytracks.content.MyTracksProviderUtils; -import com.google.android.apps.mytracks.content.TracksColumns; +import com.google.android.apps.mytracks.ImportAllTracks; import com.google.android.apps.mytracks.util.UriUtils; -import com.google.android.maps.mytracks.R; import android.app.Activity; -import android.app.AlertDialog; -import android.app.AlertDialog.Builder; -import android.app.Dialog; -import android.app.ProgressDialog; -import android.content.ContentUris; -import android.content.DialogInterface; -import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.net.Uri; -import android.os.Bundle; import android.util.Log; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; - -import javax.xml.parsers.ParserConfigurationException; - -import org.xml.sax.SAXException; - /** - * Helper activity which imports tracks from a file. + * An activity that imports a track from a file and displays the track in My Tracks. * * @author Rodrigo Damazio */ public class ImportActivity extends Activity { - private static final int PROGRESS_DIALOG = 1; - private static final int SUCCESS_DIALOG = 2; - private static final int FAILURE_DIALOG = 3; - - private MyTracksProviderUtils providerUtils; - - private ProgressDialog progressDialog; - private int resultMessage; - private long importedTrackIds[]; - - @Override - public void onCreate(Bundle savedState) { - super.onCreate(savedState); - - providerUtils = MyTracksProviderUtils.Factory.get(this); - } - @Override public void onStart() { super.onStart(); @@ -74,143 +39,20 @@ public class ImportActivity extends Activity { Intent intent = getIntent(); String action = intent.getAction(); Uri data = intent.getData(); - if (!(Intent.ACTION_VIEW.equals(action) || Intent.ACTION_ATTACH_DATA.equals(action)) - || !UriUtils.isFileUri(data)) { - Log.e(TAG, "Received an intent with unsupported action or data: " + intent); + if (!(Intent.ACTION_VIEW.equals(action) || Intent.ACTION_ATTACH_DATA.equals(action))) { + Log.e(TAG, "Received an intent with unsupported action: " + intent); finish(); return; } - - Log.i(TAG, "Importing GPX file at " + data); - startTrackImport(data.getPath()); - } - - @Override - protected Dialog onCreateDialog(int id) { - switch (id) { - case PROGRESS_DIALOG: - progressDialog = new ProgressDialog(this); - progressDialog.setIcon(android.R.drawable.ic_dialog_info); - progressDialog.setTitle(R.string.progress_title); - progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); - progressDialog.setMessage(getString(R.string.progress_message_import)); - return progressDialog; - case SUCCESS_DIALOG: - final Builder dialogBuilder = new AlertDialog.Builder(this); - dialogBuilder.setCancelable(true); - dialogBuilder.setPositiveButton(android.R.string.ok, new OnClickListener() { - @Override - public void onClick(DialogInterface arg0, int arg1) { - finish(); - } - }); - dialogBuilder.setNegativeButton(R.string.import_show_track, new OnClickListener() { - @Override - public void onClick(DialogInterface arg0, int arg1) { - showImportedTrack(); - finish(); - } - }); - return dialogBuilder.create(); - case FAILURE_DIALOG: - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setPositiveButton(R.string.ok, new OnClickListener() { - @Override - public void onClick(DialogInterface arg0, int arg1) { - finish(); - } - }); - builder.setIcon(android.R.drawable.ic_dialog_alert); - builder.setTitle(R.string.error); - return builder.create(); - + + if (!UriUtils.isFileUri(data)) { + Log.e(TAG, "Received an intent with unsupported data: " + intent); + finish(); + return; } - - return null; - } - - @Override - protected void onPrepareDialog(int id, Dialog dialog) { - super.onPrepareDialog(id, dialog); - - switch (id) { - case SUCCESS_DIALOG: - AlertDialog successDialog = (AlertDialog) dialog; - successDialog.setMessage(getString(R.string.import_success, importedTrackIds.length)); - break; - case FAILURE_DIALOG: - AlertDialog failureDialog = (AlertDialog) dialog; - failureDialog.setMessage(getString(resultMessage)); - break; - } - } - - protected void showImportedTrack() { - long lastTrackId = importedTrackIds[importedTrackIds.length - 1]; - Uri trackUri = ContentUris.withAppendedId(TracksColumns.CONTENT_URI, lastTrackId); - - Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setDataAndType(trackUri, TracksColumns.CONTENT_ITEMTYPE); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - startActivity(intent); - finish(); - } - - private void startTrackImport(final String fileName) { - showDialog(PROGRESS_DIALOG); - - Thread t = new Thread() { - @Override - public void run() { - resultMessage = R.string.success; - - importedTrackIds = null; - - try { - try { - InputStream is = new FileInputStream(fileName); - importedTrackIds = GpxImporter.importGPXFile(is, providerUtils); - } catch (SAXException e) { - Log.e(TAG, "Caught an unexpected exception.", e); - resultMessage = R.string.error_generic; - } catch (ParserConfigurationException e) { - Log.e(TAG, "Caught an unexpected exception.", e); - resultMessage = R.string.error_generic; - } catch (IOException e) { - Log.e(TAG, "Caught an unexpected exception.", e); - resultMessage = R.string.error_import_unable_to_read_file; - } catch (NullPointerException e) { - Log.e(TAG, "Caught an unexpected exception.", e); - resultMessage = R.string.error_import_invalid_gpx_format; - } catch (OutOfMemoryError e) { - Log.e(TAG, "Caught an unexpected exception.", e); - resultMessage = R.string.error_import_out_of_memory; - } - - boolean success = (importedTrackIds != null && importedTrackIds.length > 0); - showImportResult(success); - } finally { - runOnUiThread(new Runnable() { - public void run() { - dismissDialog(PROGRESS_DIALOG); - } - }); - } - } - }; - t.start(); - } - - private void showImportResult(boolean success) { - final int dialogToShow = success ? SUCCESS_DIALOG : FAILURE_DIALOG; - - // Show a dialog telling the user about the import, and asking if he wishes - // to open the track right away. - runOnUiThread(new Runnable() { - @Override - public void run() { - showDialog(dialogToShow); - } - }); + + String path = data.getPath(); + Log.i(TAG, "Importing GPX file at " + path); + new ImportAllTracks(this, path); } }