Fixing issue 190 (second step: refactoring mymaps uploading)

This commit is contained in:
Rodrigo Damazio
2010-10-14 18:35:51 -03:00
parent 8353a01082
commit 352b851e9c
3 changed files with 240 additions and 227 deletions
@@ -26,6 +26,7 @@ import com.google.android.apps.mytracks.io.AuthManagerFactory;
import com.google.android.apps.mytracks.io.GpxImporter;
import com.google.android.apps.mytracks.io.SendToDocs;
import com.google.android.apps.mytracks.io.SendToMyMaps;
import com.google.android.apps.mytracks.io.SendToMyMaps.OnSendCompletedListener;
import com.google.android.apps.mytracks.io.TrackWriter;
import com.google.android.apps.mytracks.io.TrackWriterFactory;
import com.google.android.apps.mytracks.io.TrackWriterFactory.TrackFileFormat;
@@ -55,6 +56,8 @@ import android.location.LocationManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
@@ -523,8 +526,8 @@ public class MyTracks extends TabActivity implements OnTouchListener,
if (results.hasExtra("mapid")) {
sendToMyMapsMapId = results.getStringExtra("mapid");
}
setProgressMessage(getString(
R.string.progress_message_authenticating_mymaps));
setProgressMessage(
R.string.progress_message_authenticating_mymaps);
authenticate(results, MyTracksConstants.SEND_TO_GOOGLE,
MyMapsConstants.MAPSHOP_SERVICE);
} else {
@@ -590,7 +593,7 @@ public class MyTracks extends TabActivity implements OnTouchListener,
if (resultCode == RESULT_OK) {
setProgressValue(0);
setProgressMessage(
getString(R.string.progress_message_authenticating_docs));
R.string.progress_message_authenticating_docs);
authenticate(results,
MyTracksConstants.AUTHENTICATE_TO_TRIX, "writely");
} else {
@@ -602,7 +605,7 @@ public class MyTracks extends TabActivity implements OnTouchListener,
if (resultCode == RESULT_OK) {
setProgressValue(30);
setProgressMessage(
getString(R.string.progress_message_authenticating_docs));
R.string.progress_message_authenticating_docs);
authenticate(results, MyTracksConstants.SEND_TO_DOCS, "wise");
} else {
dismissDialogSafely(DIALOG_PROGRESS);
@@ -613,7 +616,7 @@ public class MyTracks extends TabActivity implements OnTouchListener,
if (results != null && resultCode == RESULT_OK) {
Log.d(MyTracksConstants.TAG, "Sending to Docs....");
setProgressValue(50);
setProgressMessage(getString(R.string.progress_message_sending_docs));
setProgressMessage(R.string.progress_message_sending_docs);
final long trackId = results.getLongExtra("trackid", selectedTrackId);
final SendToDocs sender = new SendToDocs(this, authMap.get("wise"),
authMap.get("writely"), trackId);
@@ -644,30 +647,30 @@ public class MyTracks extends TabActivity implements OnTouchListener,
}
case MyTracksConstants.SEND_TO_GOOGLE: {
if (results != null && resultCode == RESULT_OK) {
final String mapid;
final String mapId;
final long trackId;
if (results.hasExtra("mapid")) {
mapid = results.getStringExtra("mapid");
mapId = results.getStringExtra("mapid");
} else {
mapid = "new";
mapId = "new";
}
if (results.hasExtra("trackid")) {
trackId = results.getLongExtra("trackid", -1);
} else {
trackId = selectedTrackId;
}
final SendToMyMaps sender = new SendToMyMaps(this, mapid, auth,
trackId, this/*progressIndicator*/);
Runnable onCompletion = new Runnable() {
public void run() {
sendToMyMapsMessage = sender.getStatusMessage();
sendToMyMapsSuccess = sender.wasSuccess();
OnSendCompletedListener onCompletion = new OnSendCompletedListener() {
@Override
public void onSendCompleted(String mapId, boolean success, int statusMessage) {
sendToMyMapsMessage = getString(statusMessage);
sendToMyMapsSuccess = success;
if (sendToMyMapsSuccess) {
sendToMyMapsMapId = sender.getMapId();
sendToMyMapsMapId = mapId;
// Update the map id for this track:
try {
Track track = providerUtils.getTrack(trackId);
track.setMapId(sender.getMapId());
track.setMapId(mapId);
providerUtils.updateTrack(track);
} catch (RuntimeException e) {
// If that fails whatever reasons we'll just log an error, but
@@ -688,8 +691,13 @@ public class MyTracks extends TabActivity implements OnTouchListener,
}
}
};
sender.setOnCompletion(onCompletion);
sender.run();
final SendToMyMaps sender = new SendToMyMaps(this, mapId, auth,
trackId, this/*progressIndicator*/, onCompletion);
HandlerThread handlerThread = new HandlerThread("SendToMyMaps");
handlerThread.start();
Handler handler = new Handler(handlerThread.getLooper());
handler.post(sender);
} else {
dismissDialogSafely(DIALOG_PROGRESS);
}
@@ -953,18 +961,31 @@ public class MyTracks extends TabActivity implements OnTouchListener,
});
}
public void setProgressMessage(final String text) {
// ProgressIndicator implementation
@Override
public void setProgressMessage(int resId) {
setProgressMessage(getString(resId));
}
private void setProgressMessage(final String message) {
runOnUiThread(new Runnable() {
public void run() {
synchronized (this) {
if (progressDialog != null) {
progressDialog.setMessage(text);
progressDialog.setMessage(message);
}
}
}
});
}
@Override
public void clearProgressMessage() {
setProgressMessage("");
}
@Override
public void setProgressValue(final int percent) {
runOnUiThread(new Runnable() {
public void run() {
@@ -1278,7 +1299,7 @@ public class MyTracks extends TabActivity implements OnTouchListener,
return;
}
setProgressValue(0);
setProgressMessage("");
clearProgressMessage();
showDialogSafely(DIALOG_PROGRESS);
if (sendToGoogleDialog.getSendToMyMaps()) {
if (!sendToGoogleDialog.getCreateNewMap()) {
@@ -1286,8 +1307,8 @@ public class MyTracks extends TabActivity implements OnTouchListener,
startActivityForResult(listIntent, MyTracksConstants.GET_MAP);
} else {
setProgressValue(0);
setProgressMessage(getString(
R.string.progress_message_authenticating_mymaps));
setProgressMessage(
R.string.progress_message_authenticating_mymaps);
authenticate(new Intent(), MyTracksConstants.SEND_TO_GOOGLE,
MyMapsConstants.MAPSHOP_SERVICE);
}