forked from upstream-mirrors/OpenTracks
Clean up Send to Google code.
Remove SendActivity and SendType. Pass SendRequest from one activity to the next.
This commit is contained in:
@@ -235,14 +235,6 @@ limitations under the License.
|
|||||||
android:value="com.google.android.apps.mytracks.SearchActivity" />
|
android:value="com.google.android.apps.mytracks.SearchActivity" />
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity android:name="com.google.android.apps.mytracks.io.sendtogoogle.SendActivity"
|
|
||||||
android:theme="@android:style/Theme.Translucent.NoTitleBar">
|
|
||||||
<intent-filter>
|
|
||||||
<action android:name="android.intent.action.SEND" />
|
|
||||||
<data android:mimeType="vnd.android.cursor.item/vnd.google.track" />
|
|
||||||
</intent-filter>
|
|
||||||
</activity>
|
|
||||||
|
|
||||||
<activity android:name="com.google.android.apps.mytracks.io.file.SaveActivity"
|
<activity android:name="com.google.android.apps.mytracks.io.file.SaveActivity"
|
||||||
android:theme="@android:style/Theme.Translucent.NoTitleBar"
|
android:theme="@android:style/Theme.Translucent.NoTitleBar"
|
||||||
android:noHistory="true">
|
android:noHistory="true">
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ import com.google.android.apps.mytracks.content.TrackDataHub;
|
|||||||
import com.google.android.apps.mytracks.content.TrackDataHub.ListenerDataType;
|
import com.google.android.apps.mytracks.content.TrackDataHub.ListenerDataType;
|
||||||
import com.google.android.apps.mytracks.content.TrackDataListener;
|
import com.google.android.apps.mytracks.content.TrackDataListener;
|
||||||
import com.google.android.apps.mytracks.content.Waypoint;
|
import com.google.android.apps.mytracks.content.Waypoint;
|
||||||
import com.google.android.apps.mytracks.services.tasks.StatusAnnouncerTask;
|
|
||||||
import com.google.android.apps.mytracks.stats.DoubleBuffer;
|
import com.google.android.apps.mytracks.stats.DoubleBuffer;
|
||||||
import com.google.android.apps.mytracks.stats.TripStatisticsBuilder;
|
import com.google.android.apps.mytracks.stats.TripStatisticsBuilder;
|
||||||
import com.google.android.apps.mytracks.util.LocationUtils;
|
import com.google.android.apps.mytracks.util.LocationUtils;
|
||||||
|
|||||||
@@ -35,10 +35,6 @@ public abstract class Constants {
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* onActivityResult request codes:
|
* onActivityResult request codes:
|
||||||
*
|
|
||||||
* TODO: These should be moved to the
|
|
||||||
* activities that call startActivityForResult. Thus do not need to keep a
|
|
||||||
* global order across all activities.
|
|
||||||
*/
|
*/
|
||||||
public static final int SHOW_TRACK = 0;
|
public static final int SHOW_TRACK = 0;
|
||||||
public static final int SHARE_GPX_FILE = 1;
|
public static final int SHARE_GPX_FILE = 1;
|
||||||
@@ -51,11 +47,6 @@ public abstract class Constants {
|
|||||||
public static final int SAVE_TCX_FILE = 8;
|
public static final int SAVE_TCX_FILE = 8;
|
||||||
public static final int SHOW_WAYPOINT = 9;
|
public static final int SHOW_WAYPOINT = 9;
|
||||||
public static final int WELCOME = 10;
|
public static final int WELCOME = 10;
|
||||||
public static final int CHOOSE_ACCOUNT = 11;
|
|
||||||
public static final int CHOOSE_MAP = 12;
|
|
||||||
public static final int SEND_MAPS = 13;
|
|
||||||
public static final int SEND_FUSION_TABLES = 14;
|
|
||||||
public static final int SEND_DOCS = 15;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Menu ids:
|
* Menu ids:
|
||||||
|
|||||||
@@ -25,9 +25,8 @@ import com.google.android.apps.mytracks.content.TrackDataListener;
|
|||||||
import com.google.android.apps.mytracks.content.TracksColumns;
|
import com.google.android.apps.mytracks.content.TracksColumns;
|
||||||
import com.google.android.apps.mytracks.content.Waypoint;
|
import com.google.android.apps.mytracks.content.Waypoint;
|
||||||
import com.google.android.apps.mytracks.io.file.SaveActivity;
|
import com.google.android.apps.mytracks.io.file.SaveActivity;
|
||||||
import com.google.android.apps.mytracks.io.sendtogoogle.SendType;
|
import com.google.android.apps.mytracks.io.sendtogoogle.SendRequest;
|
||||||
import com.google.android.apps.mytracks.io.sendtogoogle.UploadServiceChooserActivity;
|
import com.google.android.apps.mytracks.io.sendtogoogle.UploadServiceChooserActivity;
|
||||||
import com.google.android.apps.mytracks.services.tasks.StatusAnnouncerTask;
|
|
||||||
import com.google.android.apps.mytracks.stats.TripStatistics;
|
import com.google.android.apps.mytracks.stats.TripStatistics;
|
||||||
import com.google.android.apps.mytracks.util.GeoRect;
|
import com.google.android.apps.mytracks.util.GeoRect;
|
||||||
import com.google.android.apps.mytracks.util.LocationUtils;
|
import com.google.android.apps.mytracks.util.LocationUtils;
|
||||||
@@ -41,7 +40,6 @@ import android.content.Intent;
|
|||||||
import android.location.Location;
|
import android.location.Location;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Parcelable;
|
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.speech.tts.TextToSpeech;
|
import android.speech.tts.TextToSpeech;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -467,21 +465,18 @@ public class MapActivity extends com.google.android.maps.MapActivity
|
|||||||
long trackId = dataHub.getSelectedTrackId();
|
long trackId = dataHub.getSelectedTrackId();
|
||||||
switch (item.getItemId()) {
|
switch (item.getItemId()) {
|
||||||
case Constants.MENU_SEND_TO_GOOGLE:
|
case Constants.MENU_SEND_TO_GOOGLE:
|
||||||
intent = new Intent(this, UploadServiceChooserActivity.class);
|
intent = new Intent(this, UploadServiceChooserActivity.class)
|
||||||
intent.putExtra(UploadServiceChooserActivity.TRACK_ID, trackId);
|
.putExtra(SendRequest.SEND_REQUEST_KEY, new SendRequest(trackId, true, true, true));
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
return true;
|
return true;
|
||||||
case Constants.MENU_SHARE_MAP:
|
case Constants.MENU_SHARE_MAP:
|
||||||
intent = new Intent(this, UploadServiceChooserActivity.class);
|
intent = new Intent(this, UploadServiceChooserActivity.class)
|
||||||
intent.putExtra(UploadServiceChooserActivity.TRACK_ID, trackId);
|
.putExtra(SendRequest.SEND_REQUEST_KEY, new SendRequest(trackId, true, false, false));
|
||||||
intent.putExtra(UploadServiceChooserActivity.SEND_TYPE, (Parcelable) SendType.MAPS);
|
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
return true;
|
return true;
|
||||||
case Constants.MENU_SHARE_FUSION_TABLE:
|
case Constants.MENU_SHARE_FUSION_TABLE:
|
||||||
intent = new Intent(this, UploadServiceChooserActivity.class);
|
intent = new Intent(this, UploadServiceChooserActivity.class)
|
||||||
intent.putExtra(UploadServiceChooserActivity.TRACK_ID, trackId);
|
.putExtra(SendRequest.SEND_REQUEST_KEY, new SendRequest(trackId, false, true, false));
|
||||||
intent.putExtra(
|
|
||||||
UploadServiceChooserActivity.SEND_TYPE, (Parcelable) SendType.FUSION_TABLES);
|
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
return true;
|
return true;
|
||||||
case Constants.MENU_SAVE_GPX_FILE:
|
case Constants.MENU_SAVE_GPX_FILE:
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ import com.google.android.apps.mytracks.io.file.TempFileCleaner;
|
|||||||
import com.google.android.apps.mytracks.services.ITrackRecordingService;
|
import com.google.android.apps.mytracks.services.ITrackRecordingService;
|
||||||
import com.google.android.apps.mytracks.services.ServiceUtils;
|
import com.google.android.apps.mytracks.services.ServiceUtils;
|
||||||
import com.google.android.apps.mytracks.services.TrackRecordingServiceConnection;
|
import com.google.android.apps.mytracks.services.TrackRecordingServiceConnection;
|
||||||
import com.google.android.apps.mytracks.services.tasks.StatusAnnouncerTask;
|
|
||||||
import com.google.android.apps.mytracks.util.ApiAdapterFactory;
|
import com.google.android.apps.mytracks.util.ApiAdapterFactory;
|
||||||
import com.google.android.apps.mytracks.util.EulaUtil;
|
import com.google.android.apps.mytracks.util.EulaUtil;
|
||||||
import com.google.android.apps.mytracks.util.SystemUtils;
|
import com.google.android.apps.mytracks.util.SystemUtils;
|
||||||
|
|||||||
@@ -168,9 +168,8 @@ public class SearchActivity extends ListActivity {
|
|||||||
/**
|
/**
|
||||||
* Shows the given search results.
|
* Shows the given search results.
|
||||||
* Must be run from the UI thread.
|
* Must be run from the UI thread.
|
||||||
* @param data
|
|
||||||
*
|
*
|
||||||
* @param scoredResults the results to show, properly ordered
|
* @param data the results to show, properly ordered
|
||||||
*/
|
*/
|
||||||
private void showSearchResults(List<? extends Map<String, ?>> data) {
|
private void showSearchResults(List<? extends Map<String, ?>> data) {
|
||||||
SimpleAdapter adapter = new SimpleAdapter(this, data,
|
SimpleAdapter adapter = new SimpleAdapter(this, data,
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import com.google.android.apps.mytracks.content.TrackDataHub.ListenerDataType;
|
|||||||
import com.google.android.apps.mytracks.content.TrackDataListener;
|
import com.google.android.apps.mytracks.content.TrackDataListener;
|
||||||
import com.google.android.apps.mytracks.content.Waypoint;
|
import com.google.android.apps.mytracks.content.Waypoint;
|
||||||
import com.google.android.apps.mytracks.services.ServiceUtils;
|
import com.google.android.apps.mytracks.services.ServiceUtils;
|
||||||
import com.google.android.apps.mytracks.services.tasks.StatusAnnouncerTask;
|
|
||||||
import com.google.android.maps.mytracks.R;
|
import com.google.android.maps.mytracks.R;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ import static com.google.android.apps.mytracks.Constants.TAG;
|
|||||||
|
|
||||||
import com.google.android.apps.mytracks.content.TracksColumns;
|
import com.google.android.apps.mytracks.content.TracksColumns;
|
||||||
import com.google.android.apps.mytracks.io.file.SaveActivity;
|
import com.google.android.apps.mytracks.io.file.SaveActivity;
|
||||||
import com.google.android.apps.mytracks.io.sendtogoogle.SendType;
|
import com.google.android.apps.mytracks.io.sendtogoogle.SendRequest;
|
||||||
import com.google.android.apps.mytracks.io.sendtogoogle.UploadServiceChooserActivity;
|
import com.google.android.apps.mytracks.io.sendtogoogle.UploadServiceChooserActivity;
|
||||||
import com.google.android.apps.mytracks.services.ServiceUtils;
|
import com.google.android.apps.mytracks.services.ServiceUtils;
|
||||||
import com.google.android.apps.mytracks.services.TrackRecordingServiceConnection;
|
import com.google.android.apps.mytracks.services.TrackRecordingServiceConnection;
|
||||||
@@ -36,7 +36,6 @@ import android.database.Cursor;
|
|||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Parcelable;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.ContextMenu;
|
import android.view.ContextMenu;
|
||||||
import android.view.ContextMenu.ContextMenuInfo;
|
import android.view.ContextMenu.ContextMenuInfo;
|
||||||
@@ -175,21 +174,18 @@ public class TrackList extends ListActivity
|
|||||||
case Constants.MENU_WRITE_TO_SD_CARD:
|
case Constants.MENU_WRITE_TO_SD_CARD:
|
||||||
return false;
|
return false;
|
||||||
case Constants.MENU_SEND_TO_GOOGLE:
|
case Constants.MENU_SEND_TO_GOOGLE:
|
||||||
intent = new Intent(this, UploadServiceChooserActivity.class);
|
intent = new Intent(this, UploadServiceChooserActivity.class)
|
||||||
intent.putExtra(UploadServiceChooserActivity.TRACK_ID, trackId);
|
.putExtra(SendRequest.SEND_REQUEST_KEY, new SendRequest(trackId, true, true, true));
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
return true;
|
return true;
|
||||||
case Constants.MENU_SHARE_MAP:
|
case Constants.MENU_SHARE_MAP:
|
||||||
intent = new Intent(this, UploadServiceChooserActivity.class);
|
intent = new Intent(this, UploadServiceChooserActivity.class)
|
||||||
intent.putExtra(UploadServiceChooserActivity.TRACK_ID, trackId);
|
.putExtra(SendRequest.SEND_REQUEST_KEY, new SendRequest(trackId, true, false, false));
|
||||||
intent.putExtra(UploadServiceChooserActivity.SEND_TYPE, (Parcelable) SendType.MAPS);
|
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
return true;
|
return true;
|
||||||
case Constants.MENU_SHARE_FUSION_TABLE:
|
case Constants.MENU_SHARE_FUSION_TABLE:
|
||||||
intent = new Intent(this, UploadServiceChooserActivity.class);
|
intent = new Intent(this, UploadServiceChooserActivity.class)
|
||||||
intent.putExtra(UploadServiceChooserActivity.TRACK_ID, trackId);
|
.putExtra(SendRequest.SEND_REQUEST_KEY, new SendRequest(trackId, false, true, false));
|
||||||
intent.putExtra(
|
|
||||||
UploadServiceChooserActivity.SEND_TYPE, (Parcelable) SendType.FUSION_TABLES);
|
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
return true;
|
return true;
|
||||||
case Constants.MENU_SAVE_GPX_FILE:
|
case Constants.MENU_SAVE_GPX_FILE:
|
||||||
|
|||||||
@@ -208,7 +208,7 @@ public class SearchEngine {
|
|||||||
* Retrieves waypoints matching the given query from the database.
|
* Retrieves waypoints matching the given query from the database.
|
||||||
*
|
*
|
||||||
* @param query the query to retrieve for
|
* @param query the query to retrieve for
|
||||||
* @param tracks list to fill with the resulting waypoints
|
* @param waypoints list to fill with the resulting waypoints
|
||||||
*/
|
*/
|
||||||
private void retrieveWaypoints(SearchQuery query, ArrayList<Waypoint> waypoints) {
|
private void retrieveWaypoints(SearchQuery query, ArrayList<Waypoint> waypoints) {
|
||||||
String queryLikeSelection2 = "%" + query.textQuery + "%";
|
String queryLikeSelection2 = "%" + query.textQuery + "%";
|
||||||
|
|||||||
@@ -15,9 +15,10 @@
|
|||||||
*/
|
*/
|
||||||
package com.google.android.apps.mytracks.io.docs;
|
package com.google.android.apps.mytracks.io.docs;
|
||||||
|
|
||||||
|
import com.google.android.apps.mytracks.io.sendtogoogle.SendRequest;
|
||||||
|
import com.google.android.apps.mytracks.io.sendtogoogle.UploadResultActivity;
|
||||||
import com.google.android.maps.mytracks.R;
|
import com.google.android.maps.mytracks.R;
|
||||||
|
|
||||||
import android.accounts.Account;
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.app.ProgressDialog;
|
import android.app.ProgressDialog;
|
||||||
@@ -32,43 +33,23 @@ import android.os.Bundle;
|
|||||||
*/
|
*/
|
||||||
public class SendDocsActivity extends Activity {
|
public class SendDocsActivity extends Activity {
|
||||||
|
|
||||||
// parameters in the input intent
|
|
||||||
public static final String ACCOUNT = "account";
|
|
||||||
public static final String TRACK_ID = "trackId";
|
|
||||||
|
|
||||||
// parameters in the output intent
|
|
||||||
public static final String SUCCESS = "success";
|
|
||||||
|
|
||||||
private static final int PROGRESS_DIALOG = 1;
|
private static final int PROGRESS_DIALOG = 1;
|
||||||
|
|
||||||
|
private SendRequest sendRequest;
|
||||||
private SendDocsAsyncTask asyncTask;
|
private SendDocsAsyncTask asyncTask;
|
||||||
private ProgressDialog progressDialog;
|
private ProgressDialog progressDialog;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
sendRequest = getIntent().getParcelableExtra(SendRequest.SEND_REQUEST_KEY);
|
||||||
|
|
||||||
Object retained = getLastNonConfigurationInstance();
|
Object retained = getLastNonConfigurationInstance();
|
||||||
if (retained instanceof SendDocsAsyncTask) {
|
if (retained instanceof SendDocsAsyncTask) {
|
||||||
asyncTask = (SendDocsAsyncTask) retained;
|
asyncTask = (SendDocsAsyncTask) retained;
|
||||||
asyncTask.setActivity(this);
|
asyncTask.setActivity(this);
|
||||||
} else {
|
} else {
|
||||||
Intent intent = getIntent();
|
asyncTask = new SendDocsAsyncTask(this, sendRequest.getTrackId(), sendRequest.getAccount());
|
||||||
Account account = intent.getParcelableExtra(ACCOUNT);
|
|
||||||
if (account == null) {
|
|
||||||
setResult(RESULT_OK, new Intent().putExtra(SUCCESS, false));
|
|
||||||
finish();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
long trackId = intent.getLongExtra(TRACK_ID, -1L);
|
|
||||||
if (trackId == -1L) {
|
|
||||||
setResult(RESULT_OK, new Intent().putExtra(SUCCESS, false));
|
|
||||||
finish();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
asyncTask = new SendDocsAsyncTask(this, account, trackId);
|
|
||||||
asyncTask.execute();
|
asyncTask.execute();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -95,8 +76,7 @@ public class SendDocsActivity extends Activity {
|
|||||||
@Override
|
@Override
|
||||||
public void onCancel(DialogInterface dialog) {
|
public void onCancel(DialogInterface dialog) {
|
||||||
asyncTask.cancel(true);
|
asyncTask.cancel(true);
|
||||||
setResult(RESULT_CANCELED);
|
startNextActivity(false);
|
||||||
finish();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return progressDialog;
|
return progressDialog;
|
||||||
@@ -111,9 +91,7 @@ public class SendDocsActivity extends Activity {
|
|||||||
* @param success true if success
|
* @param success true if success
|
||||||
*/
|
*/
|
||||||
public void onAsyncTaskCompleted(boolean success) {
|
public void onAsyncTaskCompleted(boolean success) {
|
||||||
Intent intent = new Intent().putExtra(SUCCESS, success);
|
startNextActivity(success);
|
||||||
setResult(RESULT_OK, intent);
|
|
||||||
finish();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -131,4 +109,17 @@ public class SendDocsActivity extends Activity {
|
|||||||
progressDialog.setProgress(value);
|
progressDialog.setProgress(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Starts the next activity.
|
||||||
|
*
|
||||||
|
* @param success true if sendDocs is success
|
||||||
|
*/
|
||||||
|
private void startNextActivity(boolean success) {
|
||||||
|
sendRequest.setDocsSuccess(success);
|
||||||
|
Intent intent = new Intent(this, UploadResultActivity.class)
|
||||||
|
.putExtra(SendRequest.SEND_REQUEST_KEY, sendRequest);
|
||||||
|
startActivity(intent);
|
||||||
|
finish();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,8 +53,8 @@ public class SendDocsAsyncTask extends AsyncTask<Void, Integer, Boolean> {
|
|||||||
private static final String TAG = SendDocsAsyncTask.class.getSimpleName();
|
private static final String TAG = SendDocsAsyncTask.class.getSimpleName();
|
||||||
|
|
||||||
private SendDocsActivity activity;
|
private SendDocsActivity activity;
|
||||||
private final Account account;
|
|
||||||
private final long trackId;
|
private final long trackId;
|
||||||
|
private final Account account;
|
||||||
private final Context context;
|
private final Context context;
|
||||||
private final MyTracksProviderUtils myTracksProviderUtils;
|
private final MyTracksProviderUtils myTracksProviderUtils;
|
||||||
private final GDataClient gDataClient;
|
private final GDataClient gDataClient;
|
||||||
@@ -82,10 +82,10 @@ public class SendDocsAsyncTask extends AsyncTask<Void, Integer, Boolean> {
|
|||||||
private String spreadsheetId;
|
private String spreadsheetId;
|
||||||
private String worksheetId;
|
private String worksheetId;
|
||||||
|
|
||||||
public SendDocsAsyncTask(SendDocsActivity activity, Account account, long trackId) {
|
public SendDocsAsyncTask(SendDocsActivity activity, long trackId, Account account) {
|
||||||
this.activity = activity;
|
this.activity = activity;
|
||||||
this.account = account;
|
|
||||||
this.trackId = trackId;
|
this.trackId = trackId;
|
||||||
|
this.account = account;
|
||||||
|
|
||||||
context = activity.getApplicationContext();
|
context = activity.getApplicationContext();
|
||||||
myTracksProviderUtils = MyTracksProviderUtils.Factory.get(context);
|
myTracksProviderUtils = MyTracksProviderUtils.Factory.get(context);
|
||||||
|
|||||||
+34
-27
@@ -15,9 +15,11 @@
|
|||||||
*/
|
*/
|
||||||
package com.google.android.apps.mytracks.io.fusiontables;
|
package com.google.android.apps.mytracks.io.fusiontables;
|
||||||
|
|
||||||
|
import com.google.android.apps.mytracks.io.docs.SendDocsActivity;
|
||||||
|
import com.google.android.apps.mytracks.io.sendtogoogle.SendRequest;
|
||||||
|
import com.google.android.apps.mytracks.io.sendtogoogle.UploadResultActivity;
|
||||||
import com.google.android.maps.mytracks.R;
|
import com.google.android.maps.mytracks.R;
|
||||||
|
|
||||||
import android.accounts.Account;
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.app.ProgressDialog;
|
import android.app.ProgressDialog;
|
||||||
@@ -42,42 +44,24 @@ import android.os.Bundle;
|
|||||||
*/
|
*/
|
||||||
public class SendFusionTablesActivity extends Activity {
|
public class SendFusionTablesActivity extends Activity {
|
||||||
|
|
||||||
// parameters in the input intent
|
|
||||||
public static final String ACCOUNT = "account";
|
|
||||||
public static final String TRACK_ID = "trackId";
|
|
||||||
|
|
||||||
// parameters in the output intent
|
|
||||||
public static final String SUCCESS = "success";
|
|
||||||
|
|
||||||
private static final int PROGRESS_DIALOG = 1;
|
private static final int PROGRESS_DIALOG = 1;
|
||||||
|
|
||||||
|
private SendRequest sendRequest;
|
||||||
private SendFusionTablesAsyncTask asyncTask;
|
private SendFusionTablesAsyncTask asyncTask;
|
||||||
private ProgressDialog progressDialog;
|
private ProgressDialog progressDialog;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
sendRequest = getIntent().getParcelableExtra(SendRequest.SEND_REQUEST_KEY);
|
||||||
|
|
||||||
Object retained = getLastNonConfigurationInstance();
|
Object retained = getLastNonConfigurationInstance();
|
||||||
if (retained instanceof SendFusionTablesAsyncTask) {
|
if (retained instanceof SendFusionTablesAsyncTask) {
|
||||||
asyncTask = (SendFusionTablesAsyncTask) retained;
|
asyncTask = (SendFusionTablesAsyncTask) retained;
|
||||||
asyncTask.setActivity(this);
|
asyncTask.setActivity(this);
|
||||||
} else {
|
} else {
|
||||||
Intent intent = getIntent();
|
asyncTask = new SendFusionTablesAsyncTask(
|
||||||
Account account = intent.getParcelableExtra(ACCOUNT);
|
this, sendRequest.getTrackId(), sendRequest.getAccount());
|
||||||
if (account == null) {
|
|
||||||
setResult(RESULT_OK, new Intent().putExtra(SUCCESS, false));
|
|
||||||
finish();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
long trackId = intent.getLongExtra(TRACK_ID, -1L);
|
|
||||||
if (trackId == -1L) {
|
|
||||||
setResult(RESULT_OK, new Intent().putExtra(SUCCESS, false));
|
|
||||||
finish();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
asyncTask = new SendFusionTablesAsyncTask(this, account, trackId);
|
|
||||||
asyncTask.execute();
|
asyncTask.execute();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -104,8 +88,7 @@ public class SendFusionTablesActivity extends Activity {
|
|||||||
@Override
|
@Override
|
||||||
public void onCancel(DialogInterface dialog) {
|
public void onCancel(DialogInterface dialog) {
|
||||||
asyncTask.cancel(true);
|
asyncTask.cancel(true);
|
||||||
setResult(RESULT_CANCELED);
|
startNextActivity(false, true);
|
||||||
finish();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return progressDialog;
|
return progressDialog;
|
||||||
@@ -120,8 +103,7 @@ public class SendFusionTablesActivity extends Activity {
|
|||||||
* @param success true if success
|
* @param success true if success
|
||||||
*/
|
*/
|
||||||
public void onAsyncTaskCompleted(boolean success) {
|
public void onAsyncTaskCompleted(boolean success) {
|
||||||
setResult(RESULT_OK, new Intent().putExtra(SUCCESS, success));
|
startNextActivity(success, false);
|
||||||
finish();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -139,4 +121,29 @@ public class SendFusionTablesActivity extends Activity {
|
|||||||
progressDialog.setProgress(value);
|
progressDialog.setProgress(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Starts the next activity.
|
||||||
|
*
|
||||||
|
* @param success true if sendFusionTables is success
|
||||||
|
* @param isCancel true if it is a cancel request
|
||||||
|
*/
|
||||||
|
private void startNextActivity(boolean success, boolean isCancel) {
|
||||||
|
sendRequest.setFusionTablesSuccess(success);
|
||||||
|
|
||||||
|
Class<?> next;
|
||||||
|
if (isCancel) {
|
||||||
|
next = UploadResultActivity.class;
|
||||||
|
} else {
|
||||||
|
if (sendRequest.isSendDocs()) {
|
||||||
|
next = SendDocsActivity.class;
|
||||||
|
} else {
|
||||||
|
next = UploadResultActivity.class;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Intent intent = new Intent(this, next)
|
||||||
|
.putExtra(SendRequest.SEND_REQUEST_KEY, sendRequest);
|
||||||
|
startActivity(intent);
|
||||||
|
finish();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -76,8 +76,8 @@ public class SendFusionTablesAsyncTask extends AsyncTask<Void, Integer, Boolean>
|
|||||||
private SendFusionTablesActivity activity;
|
private SendFusionTablesActivity activity;
|
||||||
|
|
||||||
private final Context context;
|
private final Context context;
|
||||||
private final Account account;
|
|
||||||
private final long trackId;
|
private final long trackId;
|
||||||
|
private final Account account;
|
||||||
private final MyTracksProviderUtils myTracksProviderUtils;
|
private final MyTracksProviderUtils myTracksProviderUtils;
|
||||||
private final HttpRequestFactory httpRequestFactory;
|
private final HttpRequestFactory httpRequestFactory;
|
||||||
|
|
||||||
@@ -102,10 +102,10 @@ public class SendFusionTablesAsyncTask extends AsyncTask<Void, Integer, Boolean>
|
|||||||
int currentSegment;
|
int currentSegment;
|
||||||
|
|
||||||
public SendFusionTablesAsyncTask(
|
public SendFusionTablesAsyncTask(
|
||||||
SendFusionTablesActivity activity, Account account, long trackId) {
|
SendFusionTablesActivity activity, long trackId, Account account) {
|
||||||
this.activity = activity;
|
this.activity = activity;
|
||||||
this.account = account;
|
|
||||||
this.trackId = trackId;
|
this.trackId = trackId;
|
||||||
|
this.account = account;
|
||||||
|
|
||||||
context = activity.getApplicationContext();
|
context = activity.getApplicationContext();
|
||||||
myTracksProviderUtils = MyTracksProviderUtils.Factory.get(context);
|
myTracksProviderUtils = MyTracksProviderUtils.Factory.get(context);
|
||||||
|
|||||||
@@ -16,9 +16,9 @@
|
|||||||
package com.google.android.apps.mytracks.io.maps;
|
package com.google.android.apps.mytracks.io.maps;
|
||||||
|
|
||||||
import com.google.android.apps.mytracks.io.gdata.maps.MapsMapMetadata;
|
import com.google.android.apps.mytracks.io.gdata.maps.MapsMapMetadata;
|
||||||
|
import com.google.android.apps.mytracks.io.sendtogoogle.SendRequest;
|
||||||
import com.google.android.maps.mytracks.R;
|
import com.google.android.maps.mytracks.R;
|
||||||
|
|
||||||
import android.accounts.Account;
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
@@ -45,15 +45,10 @@ import java.util.ArrayList;
|
|||||||
*/
|
*/
|
||||||
public class ChooseMapActivity extends Activity {
|
public class ChooseMapActivity extends Activity {
|
||||||
|
|
||||||
// parameters in the input intent
|
|
||||||
public static final String ACCOUNT = "account";
|
|
||||||
|
|
||||||
// parameters in the output intent
|
|
||||||
public static final String MAP_ID = "mapId";
|
|
||||||
|
|
||||||
private static final int PROGRESS_DIALOG = 1;
|
private static final int PROGRESS_DIALOG = 1;
|
||||||
private static final int ERROR_DIALOG = 2;
|
private static final int ERROR_DIALOG = 2;
|
||||||
|
|
||||||
|
private SendRequest sendRequest;
|
||||||
private ChooseMapAsyncTask asyncTask;
|
private ChooseMapAsyncTask asyncTask;
|
||||||
private ProgressDialog progressDialog;
|
private ProgressDialog progressDialog;
|
||||||
private ArrayAdapter<ListItem> arrayAdapter;
|
private ArrayAdapter<ListItem> arrayAdapter;
|
||||||
@@ -61,6 +56,7 @@ public class ChooseMapActivity extends Activity {
|
|||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
sendRequest = getIntent().getParcelableExtra(SendRequest.SEND_REQUEST_KEY);
|
||||||
setContentView(R.layout.choose_map);
|
setContentView(R.layout.choose_map);
|
||||||
|
|
||||||
arrayAdapter = new ArrayAdapter<ListItem>(this, R.layout.choose_map_item, new ArrayList<
|
arrayAdapter = new ArrayAdapter<ListItem>(this, R.layout.choose_map_item, new ArrayList<
|
||||||
@@ -99,9 +95,7 @@ public class ChooseMapActivity extends Activity {
|
|||||||
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||||
setResult(
|
startNextActivity(arrayAdapter.getItem(position).getMapId());
|
||||||
RESULT_OK, new Intent().putExtra(MAP_ID, arrayAdapter.getItem(position).getMapId()));
|
|
||||||
finish();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
list.setAdapter(arrayAdapter);
|
list.setAdapter(arrayAdapter);
|
||||||
@@ -111,14 +105,7 @@ public class ChooseMapActivity extends Activity {
|
|||||||
asyncTask = (ChooseMapAsyncTask) retained;
|
asyncTask = (ChooseMapAsyncTask) retained;
|
||||||
asyncTask.setActivity(this);
|
asyncTask.setActivity(this);
|
||||||
} else {
|
} else {
|
||||||
Intent intent = getIntent();
|
asyncTask = new ChooseMapAsyncTask(this, sendRequest.getAccount());
|
||||||
Account account = intent.getParcelableExtra(ACCOUNT);
|
|
||||||
if (account == null) {
|
|
||||||
setResult(RESULT_OK, new Intent().putExtra(MAP_ID, (String) null));
|
|
||||||
finish();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
asyncTask = new ChooseMapAsyncTask(this, account);
|
|
||||||
asyncTask.execute();
|
asyncTask.execute();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -141,7 +128,6 @@ public class ChooseMapActivity extends Activity {
|
|||||||
@Override
|
@Override
|
||||||
public void onCancel(DialogInterface dialog) {
|
public void onCancel(DialogInterface dialog) {
|
||||||
asyncTask.cancel(true);
|
asyncTask.cancel(true);
|
||||||
setResult(RESULT_CANCELED);
|
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -156,14 +142,12 @@ public class ChooseMapActivity extends Activity {
|
|||||||
builder.setPositiveButton(R.string.generic_ok, new OnClickListener() {
|
builder.setPositiveButton(R.string.generic_ok, new OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int arg1) {
|
public void onClick(DialogInterface dialog, int arg1) {
|
||||||
setResult(RESULT_OK, new Intent().putExtra(MAP_ID, (String) null));
|
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
builder.setOnCancelListener(new OnCancelListener() {
|
builder.setOnCancelListener(new OnCancelListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onCancel(DialogInterface dialog) {
|
public void onCancel(DialogInterface dialog) {
|
||||||
setResult(RESULT_OK, new Intent().putExtra(MAP_ID, (String) null));
|
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -208,6 +192,19 @@ public class ChooseMapActivity extends Activity {
|
|||||||
showDialog(PROGRESS_DIALOG);
|
showDialog(PROGRESS_DIALOG);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Starts the next activity, {@link SendMapsActivity}.
|
||||||
|
*
|
||||||
|
* @param mapId the chosen map id
|
||||||
|
*/
|
||||||
|
private void startNextActivity(String mapId) {
|
||||||
|
sendRequest.setMapId(mapId);
|
||||||
|
Intent intent = new Intent(this, SendMapsActivity.class)
|
||||||
|
.putExtra(SendRequest.SEND_REQUEST_KEY, sendRequest);
|
||||||
|
startActivity(intent);
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A class containing {@link ChooseMapActivity} list item.
|
* A class containing {@link ChooseMapActivity} list item.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -15,9 +15,12 @@
|
|||||||
*/
|
*/
|
||||||
package com.google.android.apps.mytracks.io.maps;
|
package com.google.android.apps.mytracks.io.maps;
|
||||||
|
|
||||||
|
import com.google.android.apps.mytracks.io.docs.SendDocsActivity;
|
||||||
|
import com.google.android.apps.mytracks.io.fusiontables.SendFusionTablesActivity;
|
||||||
|
import com.google.android.apps.mytracks.io.sendtogoogle.SendRequest;
|
||||||
|
import com.google.android.apps.mytracks.io.sendtogoogle.UploadResultActivity;
|
||||||
import com.google.android.maps.mytracks.R;
|
import com.google.android.maps.mytracks.R;
|
||||||
|
|
||||||
import android.accounts.Account;
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.app.ProgressDialog;
|
import android.app.ProgressDialog;
|
||||||
@@ -32,44 +35,24 @@ import android.os.Bundle;
|
|||||||
*/
|
*/
|
||||||
public class SendMapsActivity extends Activity {
|
public class SendMapsActivity extends Activity {
|
||||||
|
|
||||||
// parameters in the input intent
|
|
||||||
public static final String ACCOUNT = "account";
|
|
||||||
public static final String TRACK_ID = "trackId";
|
|
||||||
public static final String MAP_ID = "mapId";
|
|
||||||
|
|
||||||
// parameters in the output intent
|
|
||||||
public static final String SUCCESS = "success";
|
|
||||||
|
|
||||||
private static final int PROGRESS_DIALOG = 1;
|
private static final int PROGRESS_DIALOG = 1;
|
||||||
|
|
||||||
|
private SendRequest sendRequest;
|
||||||
private SendMapsAsyncTask asyncTask;
|
private SendMapsAsyncTask asyncTask;
|
||||||
private ProgressDialog progressDialog;
|
private ProgressDialog progressDialog;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
sendRequest = getIntent().getParcelableExtra(SendRequest.SEND_REQUEST_KEY);
|
||||||
|
|
||||||
Object retained = getLastNonConfigurationInstance();
|
Object retained = getLastNonConfigurationInstance();
|
||||||
if (retained instanceof SendMapsAsyncTask) {
|
if (retained instanceof SendMapsAsyncTask) {
|
||||||
asyncTask = (SendMapsAsyncTask) retained;
|
asyncTask = (SendMapsAsyncTask) retained;
|
||||||
asyncTask.setActivity(this);
|
asyncTask.setActivity(this);
|
||||||
} else {
|
} else {
|
||||||
Intent intent = getIntent();
|
asyncTask = new SendMapsAsyncTask(
|
||||||
Account account = intent.getParcelableExtra(ACCOUNT);
|
this, sendRequest.getTrackId(), sendRequest.getAccount(), sendRequest.getMapId());
|
||||||
if (account == null) {
|
|
||||||
setResult(RESULT_OK, new Intent().putExtra(SUCCESS, false));
|
|
||||||
finish();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
long trackId = intent.getLongExtra(TRACK_ID, -1L);
|
|
||||||
if (trackId == -1L) {
|
|
||||||
setResult(RESULT_OK, new Intent().putExtra(SUCCESS, false));
|
|
||||||
finish();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
String mapId = intent.getStringExtra(MAP_ID);
|
|
||||||
|
|
||||||
asyncTask = new SendMapsAsyncTask(this, account, trackId, mapId);
|
|
||||||
asyncTask.execute();
|
asyncTask.execute();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -96,8 +79,7 @@ public class SendMapsActivity extends Activity {
|
|||||||
@Override
|
@Override
|
||||||
public void onCancel(DialogInterface dialog) {
|
public void onCancel(DialogInterface dialog) {
|
||||||
asyncTask.cancel(true);
|
asyncTask.cancel(true);
|
||||||
setResult(RESULT_CANCELED);
|
startNextActivity(false, true);
|
||||||
finish();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return progressDialog;
|
return progressDialog;
|
||||||
@@ -112,8 +94,7 @@ public class SendMapsActivity extends Activity {
|
|||||||
* @param success true if success
|
* @param success true if success
|
||||||
*/
|
*/
|
||||||
public void onAsyncTaskCompleted(boolean success) {
|
public void onAsyncTaskCompleted(boolean success) {
|
||||||
setResult(RESULT_OK, new Intent().putExtra(SUCCESS, success));
|
startNextActivity(success, false);
|
||||||
finish();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -131,4 +112,31 @@ public class SendMapsActivity extends Activity {
|
|||||||
progressDialog.setProgress(value);
|
progressDialog.setProgress(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Starts the next activity.
|
||||||
|
*
|
||||||
|
* @param success true if sendMaps is success
|
||||||
|
* @param isCancel true if it is a cancel request
|
||||||
|
*/
|
||||||
|
private void startNextActivity(boolean success, boolean isCancel) {
|
||||||
|
sendRequest.setMapsSuccess(success);
|
||||||
|
|
||||||
|
Class<?> next;
|
||||||
|
if (isCancel) {
|
||||||
|
next = UploadResultActivity.class;
|
||||||
|
} else {
|
||||||
|
if (sendRequest.isSendFusionTables()) {
|
||||||
|
next = SendFusionTablesActivity.class;
|
||||||
|
} else if (sendRequest.isSendDocs()) {
|
||||||
|
next = SendDocsActivity.class;
|
||||||
|
} else {
|
||||||
|
next = UploadResultActivity.class;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Intent intent = new Intent(this, next)
|
||||||
|
.putExtra(SendRequest.SEND_REQUEST_KEY, sendRequest);
|
||||||
|
startActivity(intent);
|
||||||
|
finish();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,8 +79,8 @@ public class SendMapsAsyncTask extends AsyncTask<Void, Integer, Boolean> {
|
|||||||
private static final String TAG = SendMapsAsyncTask.class.getSimpleName();
|
private static final String TAG = SendMapsAsyncTask.class.getSimpleName();
|
||||||
|
|
||||||
private SendMapsActivity activity;
|
private SendMapsActivity activity;
|
||||||
private final Account account;
|
|
||||||
private final long trackId;
|
private final long trackId;
|
||||||
|
private final Account account;
|
||||||
private final String chooseMapId;
|
private final String chooseMapId;
|
||||||
private final Context context;
|
private final Context context;
|
||||||
private final MyTracksProviderUtils myTracksProviderUtils;
|
private final MyTracksProviderUtils myTracksProviderUtils;
|
||||||
@@ -109,10 +109,10 @@ public class SendMapsAsyncTask extends AsyncTask<Void, Integer, Boolean> {
|
|||||||
int currentSegment;
|
int currentSegment;
|
||||||
|
|
||||||
public SendMapsAsyncTask(
|
public SendMapsAsyncTask(
|
||||||
SendMapsActivity activity, Account account, long trackId, String chooseMapId) {
|
SendMapsActivity activity, long trackId, Account account, String chooseMapId) {
|
||||||
this.activity = activity;
|
this.activity = activity;
|
||||||
this.account = account;
|
|
||||||
this.trackId = trackId;
|
this.trackId = trackId;
|
||||||
|
this.account = account;
|
||||||
this.chooseMapId = chooseMapId;
|
this.chooseMapId = chooseMapId;
|
||||||
|
|
||||||
context = activity.getApplicationContext();
|
context = activity.getApplicationContext();
|
||||||
|
|||||||
+50
-36
@@ -16,6 +16,10 @@
|
|||||||
package com.google.android.apps.mytracks.io.sendtogoogle;
|
package com.google.android.apps.mytracks.io.sendtogoogle;
|
||||||
|
|
||||||
import com.google.android.apps.mytracks.Constants;
|
import com.google.android.apps.mytracks.Constants;
|
||||||
|
import com.google.android.apps.mytracks.io.docs.SendDocsActivity;
|
||||||
|
import com.google.android.apps.mytracks.io.fusiontables.SendFusionTablesActivity;
|
||||||
|
import com.google.android.apps.mytracks.io.maps.ChooseMapActivity;
|
||||||
|
import com.google.android.apps.mytracks.io.maps.SendMapsActivity;
|
||||||
import com.google.android.apps.mytracks.util.ApiAdapterFactory;
|
import com.google.android.apps.mytracks.util.ApiAdapterFactory;
|
||||||
import com.google.android.maps.mytracks.R;
|
import com.google.android.maps.mytracks.R;
|
||||||
|
|
||||||
@@ -32,46 +36,34 @@ import android.content.SharedPreferences.Editor;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A chooser to select an account. To be called with
|
* A chooser to select an account.
|
||||||
* {@link Activity#startActivityForResult(Intent, int)}. Returns
|
|
||||||
* {@link Activity#RESULT_CANCELED} if the user cancels the activity. Otherwise,
|
|
||||||
* returns {@link Activity#RESULT_OK} with an intent containing the selected
|
|
||||||
* account. The selected account is stored as an {@link Account} in the
|
|
||||||
* {@link AccountChooserActivity#ACCOUNT} item of the intent. The selected
|
|
||||||
* account can be null.
|
|
||||||
*
|
*
|
||||||
* @author jshih@google.com (Jimmy Shih)
|
* @author jshih@google.com (Jimmy Shih)
|
||||||
*/
|
*/
|
||||||
public class AccountChooserActivity extends Activity {
|
public class AccountChooserActivity extends Activity {
|
||||||
|
|
||||||
/**
|
|
||||||
* Key for storing an {@link Account} in an {@link Intent}.
|
|
||||||
*/
|
|
||||||
public static final String ACCOUNT = "account";
|
|
||||||
|
|
||||||
private static final int NO_ACCOUNT_DIALOG = 1;
|
private static final int NO_ACCOUNT_DIALOG = 1;
|
||||||
private static final int CHOOSE_ACCOUNT_DIALOG = 2;
|
private static final int CHOOSE_ACCOUNT_DIALOG = 2;
|
||||||
|
|
||||||
|
private SendRequest sendRequest;
|
||||||
private Account[] accounts;
|
private Account[] accounts;
|
||||||
private int selectedAccountIndex;
|
private int selectedAccountIndex;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
sendRequest = getIntent().getParcelableExtra(SendRequest.SEND_REQUEST_KEY);
|
||||||
accounts = AccountManager.get(this).getAccountsByType(Constants.ACCOUNT_TYPE);
|
accounts = AccountManager.get(this).getAccountsByType(Constants.ACCOUNT_TYPE);
|
||||||
|
|
||||||
if (accounts.length == 1) {
|
if (accounts.length == 1) {
|
||||||
Intent intent = new Intent();
|
startNextActivity(accounts[0]);
|
||||||
intent.putExtra(ACCOUNT, accounts[0]);
|
|
||||||
setResult(RESULT_OK, intent);
|
|
||||||
finish();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SharedPreferences prefs = getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
|
SharedPreferences prefs = getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
|
||||||
String preferredAccount = prefs.getString(getString(R.string.preferred_account_key), "");
|
String preferredAccount = prefs.getString(getString(R.string.preferred_account_key), "");
|
||||||
|
|
||||||
selectedAccountIndex = -1;
|
selectedAccountIndex = 0;
|
||||||
for (int i = 0; i < accounts.length; i++) {
|
for (int i = 0; i < accounts.length; i++) {
|
||||||
if (accounts[i].name.equals(preferredAccount)) {
|
if (accounts[i].name.equals(preferredAccount)) {
|
||||||
selectedAccountIndex = i;
|
selectedAccountIndex = i;
|
||||||
@@ -102,15 +94,11 @@ public class AccountChooserActivity extends Activity {
|
|||||||
builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
|
builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onCancel(DialogInterface dialog) {
|
public void onCancel(DialogInterface dialog) {
|
||||||
setResult(RESULT_CANCELED);
|
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
builder.setPositiveButton(R.string.generic_ok, new DialogInterface.OnClickListener() {
|
builder.setPositiveButton(R.string.generic_ok, new DialogInterface.OnClickListener() {
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
Intent intent = new Intent();
|
|
||||||
intent.putExtra(ACCOUNT, (Account) null);
|
|
||||||
setResult(RESULT_OK, intent);
|
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -134,31 +122,23 @@ public class AccountChooserActivity extends Activity {
|
|||||||
builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
|
builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onCancel(DialogInterface dialog) {
|
public void onCancel(DialogInterface dialog) {
|
||||||
setResult(RESULT_CANCELED);
|
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
builder.setNegativeButton(R.string.generic_cancel, new DialogInterface.OnClickListener() {
|
builder.setNegativeButton(R.string.generic_cancel, new DialogInterface.OnClickListener() {
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
setResult(RESULT_CANCELED);
|
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
builder.setPositiveButton(R.string.generic_ok, new DialogInterface.OnClickListener() {
|
builder.setPositiveButton(R.string.generic_ok, new DialogInterface.OnClickListener() {
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
Account account = null;
|
Account account = accounts[selectedAccountIndex];
|
||||||
if (selectedAccountIndex != -1) {
|
SharedPreferences prefs = getSharedPreferences(
|
||||||
account = accounts[selectedAccountIndex];
|
Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
|
||||||
SharedPreferences prefs = getSharedPreferences(
|
Editor editor = prefs.edit();
|
||||||
Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
|
editor.putString(getString(R.string.preferred_account_key), account.name);
|
||||||
Editor editor = prefs.edit();
|
ApiAdapterFactory.getApiAdapter().applyPreferenceChanges(editor);
|
||||||
editor.putString(getString(R.string.preferred_account_key), account.name);
|
startNextActivity(account);
|
||||||
ApiAdapterFactory.getApiAdapter().applyPreferenceChanges(editor);
|
|
||||||
}
|
|
||||||
Intent intent = new Intent();
|
|
||||||
intent.putExtra(ACCOUNT, account);
|
|
||||||
setResult(RESULT_OK, intent);
|
|
||||||
finish();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return builder.create();
|
return builder.create();
|
||||||
@@ -166,4 +146,38 @@ public class AccountChooserActivity extends Activity {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Starts the next activity. If
|
||||||
|
* <p>
|
||||||
|
* sendMaps and newMap -> {@link SendMapsActivity}
|
||||||
|
* <p>
|
||||||
|
* sendMaps and !newMap -> {@link ChooseMapActivity}
|
||||||
|
* <p>
|
||||||
|
* !sendMaps && sendFusionTables -> {@link SendFusionTablesActivity}
|
||||||
|
* <p>
|
||||||
|
* !sendMaps && !sendFusionTables && sendDocs -> {@link SendDocsActivity}
|
||||||
|
* <p>
|
||||||
|
* !sendMaps && !sendFusionTables && !sendDocs -> {@link UploadResultActivity}
|
||||||
|
*
|
||||||
|
* @param account the chosen account
|
||||||
|
*/
|
||||||
|
private void startNextActivity(Account account) {
|
||||||
|
sendRequest.setAccount(account);
|
||||||
|
|
||||||
|
Class<?> next;
|
||||||
|
if (sendRequest.isSendMaps()) {
|
||||||
|
next = sendRequest.isNewMap() ? SendMapsActivity.class : ChooseMapActivity.class;
|
||||||
|
} else if (sendRequest.isSendFusionTables()) {
|
||||||
|
next = SendFusionTablesActivity.class;
|
||||||
|
} else if (sendRequest.isSendDocs()) {
|
||||||
|
next = SendDocsActivity.class;
|
||||||
|
} else {
|
||||||
|
next = UploadResultActivity.class;
|
||||||
|
}
|
||||||
|
Intent intent = new Intent(this, next)
|
||||||
|
.putExtra(SendRequest.SEND_REQUEST_KEY, sendRequest);
|
||||||
|
startActivity(intent);
|
||||||
|
finish();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,419 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2011 Google Inc.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
|
||||||
* use this file except in compliance with the License. You may obtain a copy of
|
|
||||||
* the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
* License for the specific language governing permissions and limitations under
|
|
||||||
* the License.
|
|
||||||
*/
|
|
||||||
package com.google.android.apps.mytracks.io.sendtogoogle;
|
|
||||||
|
|
||||||
import static com.google.android.apps.mytracks.Constants.TAG;
|
|
||||||
|
|
||||||
import com.google.android.apps.analytics.GoogleAnalyticsTracker;
|
|
||||||
import com.google.android.apps.mytracks.Constants;
|
|
||||||
import com.google.android.apps.mytracks.content.MyTracksProviderUtils;
|
|
||||||
import com.google.android.apps.mytracks.content.Track;
|
|
||||||
import com.google.android.apps.mytracks.io.docs.SendDocsActivity;
|
|
||||||
import com.google.android.apps.mytracks.io.fusiontables.SendFusionTablesActivity;
|
|
||||||
import com.google.android.apps.mytracks.io.fusiontables.SendFusionTablesUtils;
|
|
||||||
import com.google.android.apps.mytracks.io.maps.ChooseMapActivity;
|
|
||||||
import com.google.android.apps.mytracks.io.maps.SendMapsActivity;
|
|
||||||
import com.google.android.apps.mytracks.io.maps.SendMapsUtils;
|
|
||||||
import com.google.android.apps.mytracks.util.SystemUtils;
|
|
||||||
import com.google.android.maps.mytracks.R;
|
|
||||||
|
|
||||||
import android.accounts.Account;
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Helper activity for managing the sending of tracks to Google services.
|
|
||||||
*
|
|
||||||
* @author Rodrigo Damazio
|
|
||||||
*/
|
|
||||||
public class SendActivity extends Activity {
|
|
||||||
|
|
||||||
// Items in the intent that starts the activity.
|
|
||||||
public static final String TRACK_ID = "trackId";
|
|
||||||
public static final String SHARE_URL = "shareUrl";
|
|
||||||
public static final String SEND_MAPS = "sendMaps";
|
|
||||||
public static final String SEND_FUSION_TABLES = "sendFusionTables";
|
|
||||||
public static final String SEND_DOCS = "sendDocs";
|
|
||||||
public static final String CREATE_MAP = "createMap";
|
|
||||||
|
|
||||||
// Keys for saved state variables.
|
|
||||||
private static final String STATE_STATE = "state";
|
|
||||||
private static final String STATE_ACCOUNT = "account";
|
|
||||||
private static final String STATE_MAP_ID = "mapId";
|
|
||||||
private static final String STATE_DOCS_SUCCESS = "docsSuccess";
|
|
||||||
private static final String STATE_FUSION_TABLES_SUCCESS = "fusionTablesSuccess";
|
|
||||||
private static final String STATE_MAPS_SUCCESS = "mapsSuccess";
|
|
||||||
|
|
||||||
/** States for the state machine that defines the upload process. */
|
|
||||||
private enum SendState {
|
|
||||||
CHOOSE_ACCOUNT,
|
|
||||||
CHOOSE_MAP,
|
|
||||||
START,
|
|
||||||
SEND_TO_MAPS,
|
|
||||||
SEND_TO_MAPS_DONE,
|
|
||||||
SEND_TO_FUSION_TABLES,
|
|
||||||
SEND_TO_FUSION_TABLES_DONE,
|
|
||||||
SEND_TO_DOCS,
|
|
||||||
SEND_TO_DOCS_DONE,
|
|
||||||
SHOW_RESULTS,
|
|
||||||
FINISH,
|
|
||||||
DONE,
|
|
||||||
NOT_READY
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set in Activity.onCreate
|
|
||||||
private MyTracksProviderUtils providerUtils;
|
|
||||||
private GoogleAnalyticsTracker tracker;
|
|
||||||
|
|
||||||
// Send request information. Set by the intent that starts the activity.
|
|
||||||
private long sendTrackId;
|
|
||||||
private boolean shareRequest;
|
|
||||||
private boolean sendToMaps;
|
|
||||||
private boolean sendToMapsNewMap;
|
|
||||||
private boolean sendToFusionTables;
|
|
||||||
private boolean sendToDocs;
|
|
||||||
|
|
||||||
// Current sending state.
|
|
||||||
private SendState currentState;
|
|
||||||
|
|
||||||
// Authentication information.
|
|
||||||
private Account account;
|
|
||||||
|
|
||||||
// Map id from choosing a Google Map
|
|
||||||
private String mapId;
|
|
||||||
|
|
||||||
// Send result information. Used by the results dialog.
|
|
||||||
private boolean sendToMapsSuccess;
|
|
||||||
private boolean sendToFusionTablesSuccess;
|
|
||||||
private boolean sendToDocsSuccess;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
|
||||||
Log.d(TAG, "SendActivity.onCreate");
|
|
||||||
super.onCreate(savedInstanceState);
|
|
||||||
|
|
||||||
if (!handleIntent()) {
|
|
||||||
finish();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
providerUtils = MyTracksProviderUtils.Factory.get(this);
|
|
||||||
|
|
||||||
tracker = GoogleAnalyticsTracker.getInstance();
|
|
||||||
// Start the tracker in manual dispatch mode...
|
|
||||||
tracker.start(getString(R.string.my_tracks_analytics_id),
|
|
||||||
getApplicationContext());
|
|
||||||
tracker.setProductVersion("android-mytracks",
|
|
||||||
SystemUtils.getMyTracksVersion(this));
|
|
||||||
|
|
||||||
resetState();
|
|
||||||
|
|
||||||
if (savedInstanceState != null) {
|
|
||||||
restoreInstanceState(savedInstanceState);
|
|
||||||
}
|
|
||||||
|
|
||||||
// If we had the instance restored after it was done, reset it.
|
|
||||||
if (currentState == SendState.DONE) {
|
|
||||||
finish();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Execute the state machine, at the start or restored state.
|
|
||||||
Log.w(TAG, "Starting at state " + currentState);
|
|
||||||
executeStateMachine(currentState);
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean handleIntent() {
|
|
||||||
Intent intent = getIntent();
|
|
||||||
sendTrackId = intent.getLongExtra(TRACK_ID, -1L);
|
|
||||||
if (sendTrackId == -1L) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
sendToMaps = intent.getBooleanExtra(SEND_MAPS, false);
|
|
||||||
sendToFusionTables = intent.getBooleanExtra(SEND_FUSION_TABLES, false);
|
|
||||||
sendToDocs = intent.getBooleanExtra(SEND_DOCS, false);
|
|
||||||
if (!sendToMaps && !sendToFusionTables && !sendToDocs) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
sendToMapsNewMap = intent.getBooleanExtra(CREATE_MAP, true);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void restoreInstanceState(Bundle savedInstanceState) {
|
|
||||||
currentState = SendState.values()[savedInstanceState.getInt(STATE_STATE)];
|
|
||||||
account = savedInstanceState.getParcelable(STATE_ACCOUNT);
|
|
||||||
mapId = savedInstanceState.getString(STATE_MAP_ID);
|
|
||||||
sendToMapsSuccess = savedInstanceState.getBoolean(STATE_MAPS_SUCCESS);
|
|
||||||
sendToFusionTablesSuccess = savedInstanceState.getBoolean(STATE_FUSION_TABLES_SUCCESS);
|
|
||||||
sendToDocsSuccess = savedInstanceState.getBoolean(STATE_DOCS_SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onSaveInstanceState(Bundle outState) {
|
|
||||||
super.onSaveInstanceState(outState);
|
|
||||||
outState.putInt(STATE_STATE, currentState.ordinal());
|
|
||||||
outState.putParcelable(STATE_ACCOUNT, account);
|
|
||||||
outState.putString(STATE_MAP_ID, mapId);
|
|
||||||
outState.putBoolean(STATE_MAPS_SUCCESS, sendToMapsSuccess);
|
|
||||||
outState.putBoolean(STATE_FUSION_TABLES_SUCCESS, sendToFusionTablesSuccess);
|
|
||||||
outState.putBoolean(STATE_DOCS_SUCCESS, sendToDocsSuccess);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onStop() {
|
|
||||||
super.onStop();
|
|
||||||
Log.d(TAG, "SendActivity.onStop, state=" + currentState);
|
|
||||||
tracker.dispatch();
|
|
||||||
tracker.stop();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void executeStateMachine(SendState startState) {
|
|
||||||
currentState = startState;
|
|
||||||
|
|
||||||
// If a state handler returns NOT_READY, it means it's waiting for some
|
|
||||||
// event, and will call this method again when it happens.
|
|
||||||
while (currentState != SendState.DONE &&
|
|
||||||
currentState != SendState.NOT_READY) {
|
|
||||||
Log.d(TAG, "Executing state " + currentState);
|
|
||||||
currentState = executeState(currentState);
|
|
||||||
Log.d(TAG, "New state is " + currentState);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private SendState executeState(SendState state) {
|
|
||||||
switch (state) {
|
|
||||||
case CHOOSE_ACCOUNT:
|
|
||||||
return chooseAccount();
|
|
||||||
case CHOOSE_MAP:
|
|
||||||
return chooseMap();
|
|
||||||
case START:
|
|
||||||
return startSend();
|
|
||||||
case SEND_TO_MAPS:
|
|
||||||
return sendToGoogleMaps();
|
|
||||||
case SEND_TO_MAPS_DONE:
|
|
||||||
return onSendToGoogleMapsDone();
|
|
||||||
case SEND_TO_FUSION_TABLES:
|
|
||||||
return sendToFusionTables();
|
|
||||||
case SEND_TO_FUSION_TABLES_DONE:
|
|
||||||
return onSendToFusionTablesDone();
|
|
||||||
case SEND_TO_DOCS:
|
|
||||||
return sendToGoogleDocs();
|
|
||||||
case SEND_TO_DOCS_DONE:
|
|
||||||
return onSendToGoogleDocsDone();
|
|
||||||
case SHOW_RESULTS:
|
|
||||||
return onSendToGoogleDone();
|
|
||||||
case FINISH:
|
|
||||||
return onAllDone();
|
|
||||||
default:
|
|
||||||
Log.e(TAG, "Reached a non-executable state");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private SendState chooseAccount() {
|
|
||||||
Intent intent = new Intent(this, AccountChooserActivity.class);
|
|
||||||
startActivityForResult(intent, Constants.CHOOSE_ACCOUNT);
|
|
||||||
return SendState.NOT_READY;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initiates the process to send tracks to google.
|
|
||||||
* This is called once the user has selected sending options via the
|
|
||||||
* SendToGoogleDialog.
|
|
||||||
*/
|
|
||||||
private SendState startSend() {
|
|
||||||
if (sendToMaps) {
|
|
||||||
return SendState.SEND_TO_MAPS;
|
|
||||||
} else if (sendToFusionTables) {
|
|
||||||
return SendState.SEND_TO_FUSION_TABLES;
|
|
||||||
} else if (sendToDocs) {
|
|
||||||
return SendState.SEND_TO_DOCS;
|
|
||||||
} else {
|
|
||||||
Log.w(TAG, "Nowhere to upload to");
|
|
||||||
return SendState.FINISH;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private SendState chooseMap() {
|
|
||||||
if (!sendToMapsNewMap) {
|
|
||||||
Intent intent = new Intent(this, ChooseMapActivity.class)
|
|
||||||
.putExtra(ChooseMapActivity.ACCOUNT, account);
|
|
||||||
startActivityForResult(intent, Constants.CHOOSE_MAP);
|
|
||||||
return SendState.NOT_READY;
|
|
||||||
} else {
|
|
||||||
return SendState.START;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private SendState sendToGoogleMaps() {
|
|
||||||
tracker.trackPageView("/send/maps");
|
|
||||||
Intent intent = new Intent(this, SendMapsActivity.class)
|
|
||||||
.putExtra(SendMapsActivity.ACCOUNT, account)
|
|
||||||
.putExtra(SendMapsActivity.TRACK_ID, sendTrackId)
|
|
||||||
.putExtra(SendMapsActivity.MAP_ID, mapId);
|
|
||||||
startActivityForResult(intent, Constants.SEND_MAPS);
|
|
||||||
return SendState.NOT_READY;
|
|
||||||
}
|
|
||||||
|
|
||||||
private SendState onSendToGoogleMapsDone() {
|
|
||||||
if (sendToFusionTables) {
|
|
||||||
return SendState.SEND_TO_FUSION_TABLES;
|
|
||||||
} else if (sendToDocs) {
|
|
||||||
return SendState.SEND_TO_DOCS;
|
|
||||||
} else {
|
|
||||||
return SendState.SHOW_RESULTS;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private SendState sendToFusionTables() {
|
|
||||||
tracker.trackPageView("/send/fusion_tables");
|
|
||||||
Intent intent = new Intent(this, SendFusionTablesActivity.class)
|
|
||||||
.putExtra(SendFusionTablesActivity.ACCOUNT, account)
|
|
||||||
.putExtra(SendFusionTablesActivity.TRACK_ID, sendTrackId);
|
|
||||||
startActivityForResult(intent, Constants.SEND_FUSION_TABLES);
|
|
||||||
return SendState.NOT_READY;
|
|
||||||
}
|
|
||||||
|
|
||||||
private SendState onSendToFusionTablesDone() {
|
|
||||||
if (sendToDocs) {
|
|
||||||
return SendState.SEND_TO_DOCS;
|
|
||||||
} else {
|
|
||||||
return SendState.SHOW_RESULTS;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private SendState sendToGoogleDocs() {
|
|
||||||
tracker.trackPageView("/send/docs");
|
|
||||||
Intent intent = new Intent(this, SendDocsActivity.class)
|
|
||||||
.putExtra(SendFusionTablesActivity.ACCOUNT, account)
|
|
||||||
.putExtra(SendFusionTablesActivity.TRACK_ID, sendTrackId);
|
|
||||||
startActivityForResult(intent, Constants.SEND_DOCS);
|
|
||||||
return SendState.NOT_READY;
|
|
||||||
}
|
|
||||||
|
|
||||||
private SendState onSendToGoogleDocsDone() {
|
|
||||||
return SendState.SHOW_RESULTS;
|
|
||||||
}
|
|
||||||
|
|
||||||
private SendState onSendToGoogleDone() {
|
|
||||||
tracker.dispatch();
|
|
||||||
Track track = providerUtils.getTrack(sendTrackId);
|
|
||||||
String mapsUrl = sendToMaps && sendToMapsSuccess ? SendMapsUtils.getMapUrl(track) : null;
|
|
||||||
String fusionTablesUrl = sendToFusionTables && sendToFusionTablesSuccess
|
|
||||||
? SendFusionTablesUtils.getMapUrl(track) : null;
|
|
||||||
Intent intent = new Intent(this, UploadResultActivity.class)
|
|
||||||
.putExtra(UploadResultActivity.HAS_MAPS_RESULT, sendToMaps)
|
|
||||||
.putExtra(UploadResultActivity.HAS_FUSION_TABLES_RESULT, sendToFusionTables)
|
|
||||||
.putExtra(UploadResultActivity.HAS_DOCS_RESULT, sendToDocs)
|
|
||||||
.putExtra(UploadResultActivity.MAPS_SUCCESS, sendToMapsSuccess)
|
|
||||||
.putExtra(UploadResultActivity.FUSION_TABLES_SUCCESS, sendToFusionTablesSuccess)
|
|
||||||
.putExtra(UploadResultActivity.DOCS_SUCCESS, sendToDocsSuccess)
|
|
||||||
.putExtra(UploadResultActivity.SHARE_REQUEST, shareRequest)
|
|
||||||
.putExtra(UploadResultActivity.MAPS_URL, mapsUrl)
|
|
||||||
.putExtra(UploadResultActivity.FUSION_TABLES_URL, fusionTablesUrl);
|
|
||||||
startActivity(intent);
|
|
||||||
return SendState.FINISH;
|
|
||||||
}
|
|
||||||
|
|
||||||
private SendState onAllDone() {
|
|
||||||
finish();
|
|
||||||
return SendState.DONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onActivityResult(int requestCode, int resultCode,
|
|
||||||
final Intent results) {
|
|
||||||
SendState nextState = null;
|
|
||||||
switch (requestCode) {
|
|
||||||
case Constants.CHOOSE_ACCOUNT: {
|
|
||||||
if (resultCode == RESULT_CANCELED) {
|
|
||||||
nextState = SendState.FINISH;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
account = results.getParcelableExtra(AccountChooserActivity.ACCOUNT);
|
|
||||||
if (account == null) {
|
|
||||||
nextState = SendState.FINISH;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
nextState = SendState.CHOOSE_MAP;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case Constants.CHOOSE_MAP: {
|
|
||||||
if (resultCode == RESULT_CANCELED) {
|
|
||||||
nextState = SendState.FINISH;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
mapId = results.getStringExtra(ChooseMapActivity.MAP_ID);
|
|
||||||
if (mapId == null) {
|
|
||||||
nextState = SendState.FINISH;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
nextState = SendState.START;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case Constants.SEND_MAPS: {
|
|
||||||
if (resultCode == RESULT_CANCELED) {
|
|
||||||
nextState = SendState.FINISH;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
sendToMapsSuccess = results.getBooleanExtra(SendMapsActivity.SUCCESS, false);
|
|
||||||
nextState = SendState.SEND_TO_MAPS_DONE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case Constants.SEND_FUSION_TABLES: {
|
|
||||||
if (resultCode == RESULT_CANCELED) {
|
|
||||||
nextState = SendState.FINISH;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
sendToFusionTablesSuccess = results.getBooleanExtra(
|
|
||||||
SendFusionTablesActivity.SUCCESS, false);
|
|
||||||
nextState = SendState.SEND_TO_FUSION_TABLES_DONE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case Constants.SEND_DOCS: {
|
|
||||||
if (resultCode == RESULT_CANCELED) {
|
|
||||||
nextState = SendState.FINISH;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
sendToDocsSuccess = results.getBooleanExtra(SendDocsActivity.SUCCESS, false);
|
|
||||||
nextState = SendState.SEND_TO_DOCS_DONE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default: {
|
|
||||||
Log.e(TAG, "Unrequested result: " + requestCode);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nextState != null) {
|
|
||||||
executeStateMachine(nextState);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resets status information for sending to Maps/Fusion Tables/Docs.
|
|
||||||
*/
|
|
||||||
private void resetState() {
|
|
||||||
currentState = SendState.CHOOSE_ACCOUNT;
|
|
||||||
account = null;
|
|
||||||
mapId = null;
|
|
||||||
sendToMapsSuccess = false;
|
|
||||||
sendToFusionTablesSuccess = false;
|
|
||||||
sendToDocsSuccess = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,294 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012 Google Inc.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||||
|
* use this file except in compliance with the License. You may obtain a copy of
|
||||||
|
* the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
* License for the specific language governing permissions and limitations under
|
||||||
|
* the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.google.android.apps.mytracks.io.sendtogoogle;
|
||||||
|
|
||||||
|
import android.accounts.Account;
|
||||||
|
import android.os.Parcel;
|
||||||
|
import android.os.Parcelable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send request states for sending a track to Google Maps, Google Fusion Tables,
|
||||||
|
* and Google Docs.
|
||||||
|
*
|
||||||
|
* @author Jimmy Shih
|
||||||
|
*/
|
||||||
|
public class SendRequest implements Parcelable {
|
||||||
|
|
||||||
|
public static final String SEND_REQUEST_KEY = "sendRequest";
|
||||||
|
|
||||||
|
private long trackId = -1L;
|
||||||
|
private boolean showMaps = false;
|
||||||
|
private boolean showFusionTables = false;
|
||||||
|
private boolean showDocs = false;
|
||||||
|
private boolean sendMaps = false;
|
||||||
|
private boolean sendFusionTables = false;
|
||||||
|
private boolean sendDocs = false;
|
||||||
|
private boolean newMap = false;
|
||||||
|
private Account account = null;
|
||||||
|
private String mapId = null;
|
||||||
|
private boolean mapsSuccess = false;
|
||||||
|
private boolean docsSuccess = false;
|
||||||
|
private boolean fusionTablesSuccess = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new send request.
|
||||||
|
*
|
||||||
|
* @param trackId the track id
|
||||||
|
* @param showMaps true to show the Google Maps option
|
||||||
|
* @param showFusionTables true to show the Google Fusion Tables option
|
||||||
|
* @param showDocs true to show the Google Docs option
|
||||||
|
*/
|
||||||
|
public SendRequest(long trackId, boolean showMaps, boolean showFusionTables, boolean showDocs) {
|
||||||
|
this.trackId = trackId;
|
||||||
|
this.showMaps = showMaps;
|
||||||
|
this.showFusionTables = showFusionTables;
|
||||||
|
this.showDocs = showDocs;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the track id.
|
||||||
|
*/
|
||||||
|
public long getTrackId() {
|
||||||
|
return trackId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* True if showing the send to Google Maps option.
|
||||||
|
*/
|
||||||
|
public boolean isShowMaps() {
|
||||||
|
return showMaps;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* True if showing the send to Google Fusion Tables option.
|
||||||
|
*/
|
||||||
|
public boolean isShowFusionTables() {
|
||||||
|
return showFusionTables;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* True if showing the send to Google Docs option.
|
||||||
|
*/
|
||||||
|
public boolean isShowDocs() {
|
||||||
|
return showDocs;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* True if showing all the send options.
|
||||||
|
*/
|
||||||
|
public boolean isShowAll() {
|
||||||
|
return showMaps && showFusionTables && showDocs;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* True if the user has selected the send to Google Maps option.
|
||||||
|
*/
|
||||||
|
public boolean isSendMaps() {
|
||||||
|
return sendMaps;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the send to Google Maps option.
|
||||||
|
*
|
||||||
|
* @param sendMaps true if the user has selected the send to Google Maps
|
||||||
|
* option
|
||||||
|
*/
|
||||||
|
public void setSendMaps(boolean sendMaps) {
|
||||||
|
this.sendMaps = sendMaps;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* True if the user has selected the send to Google Fusion Tables option.
|
||||||
|
*/
|
||||||
|
public boolean isSendFusionTables() {
|
||||||
|
return sendFusionTables;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the send to Google Fusion Tables option.
|
||||||
|
*
|
||||||
|
* @param sendFusionTables true if the user has selected the send to Google
|
||||||
|
* Fusion Tables option
|
||||||
|
*/
|
||||||
|
public void setSendFusionTables(boolean sendFusionTables) {
|
||||||
|
this.sendFusionTables = sendFusionTables;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* True if the user has selected the send to Google Docs option.
|
||||||
|
*/
|
||||||
|
public boolean isSendDocs() {
|
||||||
|
return sendDocs;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the send to Google Docs option.
|
||||||
|
*
|
||||||
|
* @param sendDocs true if the user has selected the send to Google Docs
|
||||||
|
* option
|
||||||
|
*/
|
||||||
|
public void setSendDocs(boolean sendDocs) {
|
||||||
|
this.sendDocs = sendDocs;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* True if the user has selected to create a new Google Maps.
|
||||||
|
*/
|
||||||
|
public boolean isNewMap() {
|
||||||
|
return newMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the new map option.
|
||||||
|
*
|
||||||
|
* @param newMap true if the user has selected to create a new Google Maps.
|
||||||
|
*/
|
||||||
|
public void setNewMap(boolean newMap) {
|
||||||
|
this.newMap = newMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the account.
|
||||||
|
*/
|
||||||
|
public Account getAccount() {
|
||||||
|
return account;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the account.
|
||||||
|
*
|
||||||
|
* @param account the account
|
||||||
|
*/
|
||||||
|
public void setAccount(Account account) {
|
||||||
|
this.account = account;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the selected map id if the user has selected to send a track to an
|
||||||
|
* existing Google Maps.
|
||||||
|
*/
|
||||||
|
public String getMapId() {
|
||||||
|
return mapId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the map id.
|
||||||
|
*
|
||||||
|
* @param mapId the map id
|
||||||
|
*/
|
||||||
|
public void setMapId(String mapId) {
|
||||||
|
this.mapId = mapId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* True if sending to Google Maps is success.
|
||||||
|
*/
|
||||||
|
public boolean isMapsSuccess() {
|
||||||
|
return mapsSuccess;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the Google Maps result.
|
||||||
|
*
|
||||||
|
* @param mapsSuccess true if sending to Google Maps is success
|
||||||
|
*/
|
||||||
|
public void setMapsSuccess(boolean mapsSuccess) {
|
||||||
|
this.mapsSuccess = mapsSuccess;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* True if sending to Google Fusion Tables is success.
|
||||||
|
*/
|
||||||
|
public boolean isFusionTablesSuccess() {
|
||||||
|
return fusionTablesSuccess;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the Google Fusion Tables result.
|
||||||
|
*
|
||||||
|
* @param fusionTablesSuccess true if sending to Google Fusion Tables is
|
||||||
|
* success
|
||||||
|
*/
|
||||||
|
public void setFusionTablesSuccess(boolean fusionTablesSuccess) {
|
||||||
|
this.fusionTablesSuccess = fusionTablesSuccess;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* True if sending to Google Docs is success.
|
||||||
|
*/
|
||||||
|
public boolean isDocsSuccess() {
|
||||||
|
return docsSuccess;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the Google Docs result.
|
||||||
|
*
|
||||||
|
* @param docsSuccess true if sending to Google Docs is success
|
||||||
|
*/
|
||||||
|
public void setDocsSuccess(boolean docsSuccess) {
|
||||||
|
this.docsSuccess = docsSuccess;
|
||||||
|
}
|
||||||
|
|
||||||
|
private SendRequest(Parcel in) {
|
||||||
|
trackId = in.readLong();
|
||||||
|
showMaps = in.readByte() == 1;
|
||||||
|
showFusionTables = in.readByte() == 1;
|
||||||
|
showDocs = in.readByte() == 1;
|
||||||
|
sendMaps = in.readByte() == 1;
|
||||||
|
sendFusionTables = in.readByte() == 1;
|
||||||
|
sendDocs = in.readByte() == 1;
|
||||||
|
newMap = in.readByte() == 1;
|
||||||
|
account = in.readParcelable(null);
|
||||||
|
mapId = in.readString();
|
||||||
|
mapsSuccess = in.readByte() == 1;
|
||||||
|
fusionTablesSuccess = in.readByte() == 1;
|
||||||
|
docsSuccess = in.readByte() == 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int describeContents() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToParcel(Parcel out, int flags) {
|
||||||
|
out.writeLong(trackId);
|
||||||
|
out.writeByte((byte) (showMaps ? 1 : 0));
|
||||||
|
out.writeByte((byte) (showFusionTables ? 1 : 0));
|
||||||
|
out.writeByte((byte) (showDocs ? 1 : 0));
|
||||||
|
out.writeByte((byte) (sendMaps ? 1 : 0));
|
||||||
|
out.writeByte((byte) (sendFusionTables ? 1 : 0));
|
||||||
|
out.writeByte((byte) (sendDocs ? 1 : 0));
|
||||||
|
out.writeByte((byte) (newMap ? 1 : 0));
|
||||||
|
out.writeParcelable(account, 0);
|
||||||
|
out.writeString(mapId);
|
||||||
|
out.writeByte((byte) (mapsSuccess ? 1 : 0));
|
||||||
|
out.writeByte((byte) (fusionTablesSuccess ? 1 : 0));
|
||||||
|
out.writeByte((byte) (docsSuccess ? 1 : 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final Parcelable.Creator<SendRequest> CREATOR = new Parcelable.Creator<
|
||||||
|
SendRequest>() {
|
||||||
|
public SendRequest createFromParcel(Parcel in) {
|
||||||
|
return new SendRequest(in);
|
||||||
|
}
|
||||||
|
|
||||||
|
public SendRequest[] newArray(int size) {
|
||||||
|
return new SendRequest[size];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2011 Google Inc.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
|
||||||
* use this file except in compliance with the License. You may obtain a copy of
|
|
||||||
* the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
* License for the specific language governing permissions and limitations under
|
|
||||||
* the License.
|
|
||||||
*/
|
|
||||||
package com.google.android.apps.mytracks.io.sendtogoogle;
|
|
||||||
|
|
||||||
import com.google.android.maps.mytracks.R;
|
|
||||||
|
|
||||||
import android.os.Parcel;
|
|
||||||
import android.os.Parcelable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Enumerates the services to which we can upload track data.
|
|
||||||
*
|
|
||||||
* @author Matthew Simmons
|
|
||||||
*/
|
|
||||||
public enum SendType implements Parcelable {
|
|
||||||
MAPS(R.string.send_google_maps,
|
|
||||||
R.string.send_google_maps_url),
|
|
||||||
FUSION_TABLES(R.string.send_google_fusion_tables,
|
|
||||||
R.string.send_google_fusion_tables_url),
|
|
||||||
DOCS(R.string.send_google_docs,
|
|
||||||
R.string.send_google_docs_url);
|
|
||||||
|
|
||||||
private int serviceName;
|
|
||||||
private int serviceUrl;
|
|
||||||
|
|
||||||
private SendType(int serviceName, int serviceUrl) {
|
|
||||||
this.serviceName = serviceName;
|
|
||||||
this.serviceUrl = serviceUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Returns the resource ID for the printable (short) name of the service */
|
|
||||||
public int getServiceName() {
|
|
||||||
return serviceName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Returns the resource ID for the service's URL */
|
|
||||||
public int getServiceUrl() {
|
|
||||||
return serviceUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int describeContents() {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void writeToParcel(Parcel dest, int flags) {
|
|
||||||
dest.writeInt(ordinal());
|
|
||||||
}
|
|
||||||
|
|
||||||
public static final Creator<SendType> CREATOR = new Creator<SendType>() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public SendType createFromParcel(Parcel source) {
|
|
||||||
return SendType.values()[source.readInt()];
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public SendType[] newArray(int size) {
|
|
||||||
return new SendType[size];
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
+30
-46
@@ -16,6 +16,10 @@
|
|||||||
package com.google.android.apps.mytracks.io.sendtogoogle;
|
package com.google.android.apps.mytracks.io.sendtogoogle;
|
||||||
|
|
||||||
import com.google.android.apps.mytracks.Constants;
|
import com.google.android.apps.mytracks.Constants;
|
||||||
|
import com.google.android.apps.mytracks.content.MyTracksProviderUtils;
|
||||||
|
import com.google.android.apps.mytracks.content.Track;
|
||||||
|
import com.google.android.apps.mytracks.io.fusiontables.SendFusionTablesUtils;
|
||||||
|
import com.google.android.apps.mytracks.io.maps.SendMapsUtils;
|
||||||
import com.google.android.maps.mytracks.R;
|
import com.google.android.maps.mytracks.R;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
@@ -38,54 +42,34 @@ import android.widget.TextView;
|
|||||||
*/
|
*/
|
||||||
public class UploadResultActivity extends Activity {
|
public class UploadResultActivity extends Activity {
|
||||||
|
|
||||||
public static final String HAS_MAPS_RESULT = "hasMapsResult";
|
|
||||||
public static final String HAS_FUSION_TABLES_RESULT = "hasFusionTablesResult";
|
|
||||||
public static final String HAS_DOCS_RESULT = "hasDocsResult";
|
|
||||||
|
|
||||||
public static final String MAPS_SUCCESS = "mapsSuccess";
|
|
||||||
public static final String FUSION_TABLES_SUCCESS = "fusionTablesSuccess";
|
|
||||||
public static final String DOCS_SUCCESS = "docsSuccess";
|
|
||||||
|
|
||||||
public static final String SHARE_REQUEST = "shareRequest";
|
|
||||||
|
|
||||||
public static final String MAPS_URL = "mapsUrl";
|
|
||||||
public static final String FUSION_TABLES_URL = "fusionTablesUrl";
|
|
||||||
|
|
||||||
private static final String TEXT_PLAIN_TYPE = "text/plain";
|
private static final String TEXT_PLAIN_TYPE = "text/plain";
|
||||||
private static final int RESULT_DIALOG = 1;
|
private static final int RESULT_DIALOG = 1;
|
||||||
|
|
||||||
private boolean hasMapsResult;
|
private SendRequest sendRequest;
|
||||||
private boolean hasFusionTablesResult;
|
private Track track;
|
||||||
private boolean hasDocsResult;
|
|
||||||
|
|
||||||
private boolean mapsSuccess;
|
|
||||||
private boolean fusionTablesSuccess;
|
|
||||||
private boolean docsSuccess;
|
|
||||||
|
|
||||||
private boolean shareRequest;
|
|
||||||
private String shareUrl;
|
private String shareUrl;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
sendRequest = getIntent().getParcelableExtra(SendRequest.SEND_REQUEST_KEY);
|
||||||
|
track = null;
|
||||||
|
shareUrl = null;
|
||||||
|
|
||||||
Intent intent = getIntent();
|
if (sendRequest.isSendMaps() && sendRequest.isMapsSuccess()) {
|
||||||
hasMapsResult = intent.getBooleanExtra(HAS_MAPS_RESULT, false);
|
shareUrl = SendMapsUtils.getMapUrl(getTrack());
|
||||||
hasFusionTablesResult = intent.getBooleanExtra(HAS_FUSION_TABLES_RESULT, false);
|
|
||||||
hasDocsResult = intent.getBooleanExtra(HAS_DOCS_RESULT, false);
|
|
||||||
if (!hasMapsResult && !hasFusionTablesResult && !hasDocsResult) {
|
|
||||||
finish();
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
mapsSuccess = intent.getBooleanExtra(MAPS_SUCCESS, false);
|
if (shareUrl == null && sendRequest.isSendFusionTables()
|
||||||
fusionTablesSuccess = intent.getBooleanExtra(FUSION_TABLES_SUCCESS, false);
|
&& sendRequest.isFusionTablesSuccess()) {
|
||||||
docsSuccess = intent.getBooleanExtra(DOCS_SUCCESS, false);
|
shareUrl = SendFusionTablesUtils.getMapUrl(getTrack());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
shareRequest = intent.getBooleanExtra(SHARE_REQUEST, false);
|
private Track getTrack() {
|
||||||
|
if (track == null) {
|
||||||
String mapsUrl = intent.getStringExtra(MAPS_URL);
|
track = MyTracksProviderUtils.Factory.get(this).getTrack(sendRequest.getTrackId());
|
||||||
String fusionTablesUrl = intent.getStringExtra(FUSION_TABLES_URL);
|
}
|
||||||
shareUrl = mapsUrl != null ? mapsUrl : fusionTablesUrl;
|
return track;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -118,28 +102,28 @@ public class UploadResultActivity extends Activity {
|
|||||||
TextView errorFooter = (TextView) view.findViewById(R.id.upload_result_error_footer);
|
TextView errorFooter = (TextView) view.findViewById(R.id.upload_result_error_footer);
|
||||||
|
|
||||||
boolean hasError = false;
|
boolean hasError = false;
|
||||||
if (!hasMapsResult) {
|
if (!sendRequest.isSendMaps()) {
|
||||||
mapsResult.setVisibility(View.GONE);
|
mapsResult.setVisibility(View.GONE);
|
||||||
} else {
|
} else {
|
||||||
if (!mapsSuccess) {
|
if (!sendRequest.isMapsSuccess()) {
|
||||||
mapsResultIcon.setImageResource(R.drawable.failure);
|
mapsResultIcon.setImageResource(R.drawable.failure);
|
||||||
hasError = true;
|
hasError = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!hasFusionTablesResult) {
|
if (!sendRequest.isSendFusionTables()) {
|
||||||
fusionTablesResult.setVisibility(View.GONE);
|
fusionTablesResult.setVisibility(View.GONE);
|
||||||
} else {
|
} else {
|
||||||
if (!fusionTablesSuccess) {
|
if (!sendRequest.isFusionTablesSuccess()) {
|
||||||
fusionTablesResultIcon.setImageResource(R.drawable.failure);
|
fusionTablesResultIcon.setImageResource(R.drawable.failure);
|
||||||
hasError = true;
|
hasError = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!hasDocsResult) {
|
if (!sendRequest.isSendDocs()) {
|
||||||
docsResult.setVisibility(View.GONE);
|
docsResult.setVisibility(View.GONE);
|
||||||
} else {
|
} else {
|
||||||
if (!docsSuccess) {
|
if (!sendRequest.isDocsSuccess()) {
|
||||||
docsResultIcon.setImageResource(R.drawable.failure);
|
docsResultIcon.setImageResource(R.drawable.failure);
|
||||||
hasError = true;
|
hasError = true;
|
||||||
}
|
}
|
||||||
@@ -166,16 +150,16 @@ public class UploadResultActivity extends Activity {
|
|||||||
getString(R.string.generic_ok), new DialogInterface.OnClickListener() {
|
getString(R.string.generic_ok), new DialogInterface.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
if (shareRequest && shareUrl != null) {
|
if (!sendRequest.isShowAll() && shareUrl != null) {
|
||||||
startShareUrlActivity(shareUrl);
|
startShareUrlActivity(shareUrl);
|
||||||
}
|
}
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Add a Share URL button if not a shareRequest and shareUrl
|
// Add a Share URL button if showing all the options and a shareUrl
|
||||||
// exists
|
// exists
|
||||||
if (!shareRequest && shareUrl != null) {
|
if (sendRequest.isShowAll() && shareUrl != null) {
|
||||||
builder.setNegativeButton(getString(R.string.send_google_result_share_url),
|
builder.setNegativeButton(getString(R.string.send_google_result_share_url),
|
||||||
new DialogInterface.OnClickListener() {
|
new DialogInterface.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+59
-65
@@ -15,8 +15,10 @@
|
|||||||
*/
|
*/
|
||||||
package com.google.android.apps.mytracks.io.sendtogoogle;
|
package com.google.android.apps.mytracks.io.sendtogoogle;
|
||||||
|
|
||||||
|
import com.google.android.apps.analytics.GoogleAnalyticsTracker;
|
||||||
import com.google.android.apps.mytracks.Constants;
|
import com.google.android.apps.mytracks.Constants;
|
||||||
import com.google.android.apps.mytracks.util.ApiAdapterFactory;
|
import com.google.android.apps.mytracks.util.ApiAdapterFactory;
|
||||||
|
import com.google.android.apps.mytracks.util.SystemUtils;
|
||||||
import com.google.android.maps.mytracks.R;
|
import com.google.android.maps.mytracks.R;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
@@ -43,20 +45,9 @@ import android.widget.TableRow;
|
|||||||
*/
|
*/
|
||||||
public class UploadServiceChooserActivity extends Activity {
|
public class UploadServiceChooserActivity extends Activity {
|
||||||
|
|
||||||
/**
|
|
||||||
* The track id.
|
|
||||||
*/
|
|
||||||
public static final String TRACK_ID = "trackId";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The send type. Null to send to all Google services.
|
|
||||||
*/
|
|
||||||
public static final String SEND_TYPE = "sendType";
|
|
||||||
|
|
||||||
private static final int SERVICE_PICKER_DIALOG = 1;
|
private static final int SERVICE_PICKER_DIALOG = 1;
|
||||||
|
|
||||||
private long trackId;
|
private SendRequest sendRequest;
|
||||||
private SendType sendType;
|
|
||||||
|
|
||||||
private TableRow mapsTableRow;
|
private TableRow mapsTableRow;
|
||||||
private TableRow fusionTablesTableRow;
|
private TableRow fusionTablesTableRow;
|
||||||
@@ -76,10 +67,7 @@ public class UploadServiceChooserActivity extends Activity {
|
|||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
sendRequest = getIntent().getParcelableExtra(SendRequest.SEND_REQUEST_KEY);
|
||||||
Intent intent = getIntent();
|
|
||||||
trackId = intent.getLongExtra(TRACK_ID, -1L);
|
|
||||||
sendType = intent.getParcelableExtra(SEND_TYPE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -136,23 +124,15 @@ public class UploadServiceChooserActivity extends Activity {
|
|||||||
send.setOnClickListener(new View.OnClickListener() {
|
send.setOnClickListener(new View.OnClickListener() {
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
saveState();
|
saveState();
|
||||||
Intent intent = new Intent(UploadServiceChooserActivity.this, SendActivity.class);
|
startNextActivity();
|
||||||
intent.putExtra(SendActivity.TRACK_ID, trackId);
|
|
||||||
intent.putExtra(SendActivity.SHARE_URL, sendType != null);
|
|
||||||
intent.putExtra(SendActivity.SEND_MAPS, sendMaps());
|
|
||||||
intent.putExtra(SendActivity.SEND_FUSION_TABLES, sendFusionTables());
|
|
||||||
intent.putExtra(SendActivity.SEND_DOCS, sendDocs());
|
|
||||||
intent.putExtra(SendActivity.CREATE_MAP, !existingMapRadioButton.isChecked());
|
|
||||||
startActivity(intent);
|
|
||||||
finish();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Setup initial state
|
// Setup initial state
|
||||||
initState();
|
initState();
|
||||||
|
|
||||||
// Update state based on sendType
|
// Update state based on sendRequest
|
||||||
updateStateBySendType();
|
updateStateBySendRequest();
|
||||||
|
|
||||||
// Update state based on current user selection
|
// Update state based on current user selection
|
||||||
updateStateBySelection();
|
updateStateBySelection();
|
||||||
@@ -180,21 +160,21 @@ public class UploadServiceChooserActivity extends Activity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the UI state based on the sendType.
|
* Updates the UI state based on sendRequest.
|
||||||
*/
|
*/
|
||||||
private void updateStateBySendType() {
|
private void updateStateBySendRequest() {
|
||||||
if (sendType == SendType.MAPS) {
|
if (!sendRequest.isShowAll()) {
|
||||||
mapsCheckBox.setChecked(true);
|
if (sendRequest.isShowMaps()) {
|
||||||
} else if (sendType == SendType.FUSION_TABLES) {
|
mapsCheckBox.setChecked(true);
|
||||||
fusionTablesCheckBox.setChecked(true);
|
} else if (sendRequest.isShowFusionTables()) {
|
||||||
} else if (sendType == SendType.DOCS) {
|
fusionTablesCheckBox.setChecked(true);
|
||||||
docsCheckBox.setChecked(true);
|
} else if (sendRequest.isShowDocs()) {
|
||||||
} else {
|
docsCheckBox.setChecked(true);
|
||||||
// sendType == null
|
}
|
||||||
}
|
}
|
||||||
mapsTableRow.setVisibility(showMaps() ? View.VISIBLE : View.GONE);
|
mapsTableRow.setVisibility(sendRequest.isShowMaps() ? View.VISIBLE : View.GONE);
|
||||||
fusionTablesTableRow.setVisibility(showFusionTables() ? View.VISIBLE : View.GONE);
|
fusionTablesTableRow.setVisibility(sendRequest.isShowFusionTables() ? View.VISIBLE : View.GONE);
|
||||||
docsTableRow.setVisibility(showDocs() ? View.VISIBLE : View.GONE);
|
docsTableRow.setVisibility(sendRequest.isShowDocs() ? View.VISIBLE : View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -213,7 +193,7 @@ public class UploadServiceChooserActivity extends Activity {
|
|||||||
Editor editor = prefs.edit();
|
Editor editor = prefs.edit();
|
||||||
editor.putBoolean(
|
editor.putBoolean(
|
||||||
getString(R.string.pick_existing_map_key), existingMapRadioButton.isChecked());
|
getString(R.string.pick_existing_map_key), existingMapRadioButton.isChecked());
|
||||||
if (sendType == null) {
|
if (sendRequest.isShowAll()) {
|
||||||
editor.putBoolean(getString(R.string.send_to_maps_key), sendMaps());
|
editor.putBoolean(getString(R.string.send_to_maps_key), sendMaps());
|
||||||
editor.putBoolean(getString(R.string.send_to_fusion_tables_key), sendFusionTables());
|
editor.putBoolean(getString(R.string.send_to_fusion_tables_key), sendFusionTables());
|
||||||
editor.putBoolean(getString(R.string.send_to_docs_key), sendDocs());
|
editor.putBoolean(getString(R.string.send_to_docs_key), sendDocs());
|
||||||
@@ -221,45 +201,59 @@ public class UploadServiceChooserActivity extends Activity {
|
|||||||
ApiAdapterFactory.getApiAdapter().applyPreferenceChanges(editor);
|
ApiAdapterFactory.getApiAdapter().applyPreferenceChanges(editor);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns true to show the Google Maps option.
|
|
||||||
*/
|
|
||||||
private boolean showMaps() {
|
|
||||||
return sendType == null || sendType == SendType.MAPS;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns true to show the Google Fusion Tables option.
|
|
||||||
*/
|
|
||||||
private boolean showFusionTables() {
|
|
||||||
return sendType == null || sendType == SendType.FUSION_TABLES;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns true to show the Google Docs option.
|
|
||||||
*/
|
|
||||||
private boolean showDocs() {
|
|
||||||
return sendType == null || sendType == SendType.DOCS;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true to send to Google Maps.
|
* Returns true to send to Google Maps.
|
||||||
*/
|
*/
|
||||||
private boolean sendMaps() {
|
private boolean sendMaps() {
|
||||||
return showMaps() && mapsCheckBox.isChecked();
|
return sendRequest.isShowMaps() && mapsCheckBox.isChecked();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true to send to Google Fusion Tables.
|
* Returns true to send to Google Fusion Tables.
|
||||||
*/
|
*/
|
||||||
private boolean sendFusionTables() {
|
private boolean sendFusionTables() {
|
||||||
return showFusionTables() && fusionTablesCheckBox.isChecked();
|
return sendRequest.isShowFusionTables() && fusionTablesCheckBox.isChecked();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true to send to Google Docs.
|
* Returns true to send to Google Docs.
|
||||||
*/
|
*/
|
||||||
private boolean sendDocs() {
|
private boolean sendDocs() {
|
||||||
return showDocs() && docsCheckBox.isChecked();
|
return sendRequest.isShowDocs() && docsCheckBox.isChecked();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Starts the next activity, {@link AccountChooserActivity}.
|
||||||
|
*/
|
||||||
|
private void startNextActivity() {
|
||||||
|
sendStats();
|
||||||
|
sendRequest.setSendMaps(sendMaps());
|
||||||
|
sendRequest.setSendFusionTables(sendFusionTables());
|
||||||
|
sendRequest.setSendDocs(sendDocs());
|
||||||
|
sendRequest.setNewMap(!existingMapRadioButton.isChecked());
|
||||||
|
Intent intent = new Intent(this, AccountChooserActivity.class)
|
||||||
|
.putExtra(SendRequest.SEND_REQUEST_KEY, sendRequest);
|
||||||
|
startActivity(intent);
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sends stats to Google Analytics.
|
||||||
|
*/
|
||||||
|
private void sendStats() {
|
||||||
|
GoogleAnalyticsTracker tracker = GoogleAnalyticsTracker.getInstance();
|
||||||
|
tracker.start(getString(R.string.my_tracks_analytics_id), getApplicationContext());
|
||||||
|
tracker.setProductVersion("android-mytracks", SystemUtils.getMyTracksVersion(this));
|
||||||
|
if (sendRequest.isSendMaps()) {
|
||||||
|
tracker.trackPageView("/send/maps");
|
||||||
|
}
|
||||||
|
if (sendRequest.isSendFusionTables()) {
|
||||||
|
tracker.trackPageView("/send/fusion_tables");
|
||||||
|
}
|
||||||
|
if (sendRequest.isSendDocs()) {
|
||||||
|
tracker.trackPageView("/send/docs");
|
||||||
|
}
|
||||||
|
tracker.dispatch();
|
||||||
|
tracker.stop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -215,7 +215,7 @@ public interface MyTracksProviderUtils {
|
|||||||
* Caller owns the returned cursor and is responsible for closing it.
|
* Caller owns the returned cursor and is responsible for closing it.
|
||||||
*
|
*
|
||||||
* @param selection a given selection
|
* @param selection a given selection
|
||||||
* @param selecttionArgs parameters for the given selection
|
* @param selectionArgs parameters for the given selection
|
||||||
* @param order the order to return results in
|
* @param order the order to return results in
|
||||||
* @return a cursor of the selected tracks
|
* @return a cursor of the selected tracks
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user