Combine share via drive and share via maps url into a share button.

Use settings to choose between drive and maps.
This commit is contained in:
Jimmy Shih
2013-04-18 13:34:30 -07:00
parent c4d7b544cb
commit c38ee02d4b
21 changed files with 131 additions and 129 deletions
@@ -24,6 +24,8 @@ import com.google.android.apps.mytracks.fragments.ChooseAccountDialogFragment;
import com.google.android.apps.mytracks.fragments.ChooseAccountDialogFragment.ChooseAccountCaller;
import com.google.android.apps.mytracks.fragments.ChooseActivityDialogFragment;
import com.google.android.apps.mytracks.fragments.ChooseActivityDialogFragment.ChooseActivityCaller;
import com.google.android.apps.mytracks.fragments.ConfirmDialogFragment;
import com.google.android.apps.mytracks.fragments.ConfirmDialogFragment.ConfirmCaller;
import com.google.android.apps.mytracks.io.drive.SendDriveActivity;
import com.google.android.apps.mytracks.io.fusiontables.SendFusionTablesActivity;
import com.google.android.apps.mytracks.io.gdata.maps.MapsConstants;
@@ -34,8 +36,10 @@ import com.google.android.apps.mytracks.io.sendtogoogle.SendToGoogleUtils;
import com.google.android.apps.mytracks.io.sendtogoogle.UploadResultActivity;
import com.google.android.apps.mytracks.io.spreadsheets.SendSpreadsheetsActivity;
import com.google.android.apps.mytracks.io.sync.SyncUtils;
import com.google.android.apps.mytracks.util.AnalyticsUtils;
import com.google.android.apps.mytracks.util.IntentUtils;
import com.google.android.apps.mytracks.util.PreferencesUtils;
import com.google.android.apps.mytracks.util.StringUtils;
import com.google.android.maps.mytracks.R;
import android.accounts.Account;
@@ -59,8 +63,9 @@ import java.io.IOException;
*
* @author Jimmy Shih
*/
public abstract class AbstractSendToGoogleActivity extends AbstractMyTracksActivity
implements ChooseAccountCaller, CheckPermissionCaller, AddEmailsCaller, ChooseActivityCaller {
public abstract class AbstractSendToGoogleActivity extends AbstractMyTracksActivity implements
ChooseAccountCaller, CheckPermissionCaller, AddEmailsCaller, ChooseActivityCaller,
ConfirmCaller {
private static final String TAG = AbstractMyTracksActivity.class.getSimpleName();
private static final String SEND_REQUEST_KEY = "send_request_key";
@@ -329,4 +334,41 @@ public abstract class AbstractSendToGoogleActivity extends AbstractMyTracksActiv
private void onPermissionFailure() {
Toast.makeText(this, R.string.send_google_no_account_permission, Toast.LENGTH_LONG).show();
}
protected void confirmShare(long trackId) {
String shareTrack = PreferencesUtils.getString(
this, R.string.share_track_key, PreferencesUtils.SHARE_TRACK_DEFAULT);
if (shareTrack.equals(PreferencesUtils.SHARE_TRACK_DEFAULT)) {
ConfirmDialogFragment.newInstance(R.string.confirm_share_drive_key,
PreferencesUtils.CONFIRM_SHARE_DRIVE_DEFAULT,
getString(R.string.share_track_drive_confirm_message), trackId)
.show(getSupportFragmentManager(), ConfirmDialogFragment.CONFIRM_DIALOG_TAG);
} else {
ConfirmDialogFragment.newInstance(R.string.confirm_share_maps_key,
PreferencesUtils.CONFIRM_SHARE_MAPS_DEFAULT, StringUtils.getHtml(this,
R.string.share_track_maps_confirm_message, R.string.maps_public_unlisted_url),
trackId).show(getSupportFragmentManager(), ConfirmDialogFragment.CONFIRM_DIALOG_TAG);
}
}
@Override
public void onConfirmDone(int confirmId, long trackId) {
switch (confirmId) {
case R.string.confirm_share_drive_key:
AnalyticsUtils.sendPageViews(this, "/action/share_drive");
SendRequest sendRequest = new SendRequest(trackId);
sendRequest.setSendDrive(true);
sendRequest.setDriveShare(true);
sendToGoogle(sendRequest);
break;
case R.string.confirm_share_maps_key:
AnalyticsUtils.sendPageViews(this, "/action/share_maps");
sendRequest = new SendRequest(trackId);
sendRequest.setSendMaps(true);
sendRequest.setMapsShare(true);
sendToGoogle(sendRequest);
break;
default:
}
}
}
@@ -74,7 +74,7 @@ public class MarkerListActivity extends AbstractMyTracksActivity implements Dele
}
public void onPrepare(Menu menu, int position, long id) {
menu.findItem(R.id.list_context_menu_share_drive).setVisible(false);
menu.findItem(R.id.list_context_menu_share).setVisible(false);
menu.findItem(R.id.list_context_menu_show_on_map).setVisible(true);
menu.findItem(R.id.list_context_menu_edit).setVisible(!track.isSharedWithMe());
menu.findItem(R.id.list_context_menu_delete).setVisible(!track.isSharedWithMe());
@@ -24,17 +24,13 @@ import com.google.android.apps.mytracks.content.SearchEngineProvider;
import com.google.android.apps.mytracks.content.Track;
import com.google.android.apps.mytracks.content.Waypoint;
import com.google.android.apps.mytracks.content.Waypoint.WaypointType;
import com.google.android.apps.mytracks.fragments.ConfirmDialogFragment;
import com.google.android.apps.mytracks.fragments.ConfirmDialogFragment.ConfirmCaller;
import com.google.android.apps.mytracks.fragments.DeleteOneMarkerDialogFragment;
import com.google.android.apps.mytracks.fragments.DeleteOneMarkerDialogFragment.DeleteOneMarkerCaller;
import com.google.android.apps.mytracks.fragments.DeleteOneTrackDialogFragment;
import com.google.android.apps.mytracks.fragments.DeleteOneTrackDialogFragment.DeleteOneTrackCaller;
import com.google.android.apps.mytracks.io.sendtogoogle.SendRequest;
import com.google.android.apps.mytracks.services.MyTracksLocationManager;
import com.google.android.apps.mytracks.services.TrackRecordingServiceConnection;
import com.google.android.apps.mytracks.stats.TripStatistics;
import com.google.android.apps.mytracks.util.AnalyticsUtils;
import com.google.android.apps.mytracks.util.ApiAdapterFactory;
import com.google.android.apps.mytracks.util.IntentUtils;
import com.google.android.apps.mytracks.util.ListItemUtils;
@@ -79,7 +75,7 @@ import java.util.SortedSet;
* @author Rodrigo Damazio
*/
public class SearchListActivity extends AbstractSendToGoogleActivity
implements ConfirmCaller, DeleteOneTrackCaller, DeleteOneMarkerCaller {
implements DeleteOneTrackCaller, DeleteOneMarkerCaller {
private static final String TAG = SearchListActivity.class.getSimpleName();
@@ -141,7 +137,7 @@ public class SearchListActivity extends AbstractSendToGoogleActivity
Long trackId = (Long) item.get(TRACK_ID_FIELD);
Long markerId = (Long) item.get(MARKER_ID_FIELD);
Track track = myTracksProviderUtils.getTrack(trackId);
menu.findItem(R.id.list_context_menu_share_drive)
menu.findItem(R.id.list_context_menu_share)
.setVisible(markerId == null && !track.isSharedWithMe());
menu.findItem(R.id.list_context_menu_show_on_map).setVisible(markerId != null);
menu.findItem(R.id.list_context_menu_edit).setVisible(!track.isSharedWithMe());
@@ -328,11 +324,8 @@ public class SearchListActivity extends AbstractSendToGoogleActivity
Long markerId = (Long) item.get(MARKER_ID_FIELD);
Intent intent;
switch (itemId) {
case R.id.list_context_menu_share_drive:
ConfirmDialogFragment.newInstance(R.string.confirm_share_drive_key,
PreferencesUtils.CONFIRM_SHARE_DRIVE_DEFAULT,
getString(R.string.share_track_drive_confirm_message), trackId)
.show(getSupportFragmentManager(), ConfirmDialogFragment.CONFIRM_DIALOG_TAG);
case R.id.list_context_menu_share:
confirmShare(trackId);
return true;
case R.id.list_context_menu_show_on_map:
if (markerId != null) {
@@ -510,20 +503,6 @@ public class SearchListActivity extends AbstractSendToGoogleActivity
resultMap.put(MARKER_ID_FIELD, null);
}
@Override
public void onConfirmDone(int confirmId, long trackId) {
switch (confirmId) {
case R.string.confirm_share_drive_key:
AnalyticsUtils.sendPageViews(this, "/action/share_drive");
SendRequest sendRequest = new SendRequest(trackId);
sendRequest.setSendDrive(true);
sendRequest.setDriveShare(true);
sendToGoogle(sendRequest);
break;
default:
}
}
@Override
public TrackRecordingServiceConnection getTrackRecordingServiceConnection() {
return trackRecordingServiceConnection;
@@ -25,7 +25,6 @@ import com.google.android.apps.mytracks.fragments.ChartFragment;
import com.google.android.apps.mytracks.fragments.ChooseUploadServiceDialogFragment;
import com.google.android.apps.mytracks.fragments.ChooseUploadServiceDialogFragment.ChooseUploadServiceCaller;
import com.google.android.apps.mytracks.fragments.ConfirmDialogFragment;
import com.google.android.apps.mytracks.fragments.ConfirmDialogFragment.ConfirmCaller;
import com.google.android.apps.mytracks.fragments.DeleteOneTrackDialogFragment;
import com.google.android.apps.mytracks.fragments.DeleteOneTrackDialogFragment.DeleteOneTrackCaller;
import com.google.android.apps.mytracks.fragments.FrequencyDialogFragment;
@@ -41,7 +40,6 @@ import com.google.android.apps.mytracks.util.AnalyticsUtils;
import com.google.android.apps.mytracks.util.GoogleFeedbackUtils;
import com.google.android.apps.mytracks.util.IntentUtils;
import com.google.android.apps.mytracks.util.PreferencesUtils;
import com.google.android.apps.mytracks.util.StringUtils;
import com.google.android.apps.mytracks.util.TrackRecordingServiceConnectionUtils;
import com.google.android.maps.mytracks.R;
@@ -72,7 +70,7 @@ import java.util.Locale;
* @author Rodrigo Damazio
*/
public class TrackDetailActivity extends AbstractSendToGoogleActivity
implements ConfirmCaller, ChooseUploadServiceCaller, DeleteOneTrackCaller {
implements ChooseUploadServiceCaller, DeleteOneTrackCaller {
public static final String EXTRA_TRACK_ID = "track_id";
public static final String EXTRA_MARKER_ID = "marker_id";
@@ -99,8 +97,7 @@ public class TrackDetailActivity extends AbstractSendToGoogleActivity
private MenuItem insertMarkerMenuItem;
private MenuItem playMenuItem;
private MenuItem shareDriveMenuItem;
private MenuItem shareMapsMenuItem;
private MenuItem shareMenuItem;
private MenuItem sendGoogleMenuItem;
private MenuItem saveMenuItem;
private MenuItem voiceFrequencyMenuItem;
@@ -301,13 +298,12 @@ public class TrackDetailActivity extends AbstractSendToGoogleActivity
Track track = myTracksProviderUtils.getTrack(trackId);
boolean sharedWithMe = track != null ? track.isSharedWithMe() : true;
menu.findItem(R.id.track_detail_edit).setVisible(!sharedWithMe);
shareDriveMenuItem = menu.findItem(R.id.track_detail_share_drive);
shareDriveMenuItem.setEnabled(!sharedWithMe);
shareDriveMenuItem.setVisible(!sharedWithMe);
shareMenuItem = menu.findItem(R.id.track_detail_share);
shareMenuItem.setEnabled(!sharedWithMe);
shareMenuItem.setVisible(!sharedWithMe);
insertMarkerMenuItem = menu.findItem(R.id.track_detail_insert_marker);
playMenuItem = menu.findItem(R.id.track_detail_play);
shareMapsMenuItem = menu.findItem(R.id.track_detail_share_maps);
sendGoogleMenuItem = menu.findItem(R.id.track_detail_send_google);
saveMenuItem = menu.findItem(R.id.track_detail_save);
voiceFrequencyMenuItem = menu.findItem(R.id.track_detail_voice_frequency);
@@ -349,17 +345,8 @@ public class TrackDetailActivity extends AbstractSendToGoogleActivity
getSupportFragmentManager(), InstallEarthDialogFragment.INSTALL_EARTH_DIALOG_TAG);
}
return true;
case R.id.track_detail_share_drive:
ConfirmDialogFragment.newInstance(R.string.confirm_share_drive_key,
PreferencesUtils.CONFIRM_SHARE_DRIVE_DEFAULT,
getString(R.string.share_track_drive_confirm_message), trackId)
.show(getSupportFragmentManager(), ConfirmDialogFragment.CONFIRM_DIALOG_TAG);
return true;
case R.id.track_detail_share_maps:
ConfirmDialogFragment.newInstance(R.string.confirm_share_maps_key,
PreferencesUtils.CONFIRM_SHARE_MAPS_DEFAULT, StringUtils.getHtml(
this, R.string.share_track_maps_confirm_message, R.string.maps_public_unlisted_url),
trackId).show(getSupportFragmentManager(), ConfirmDialogFragment.CONFIRM_DIALOG_TAG);
case R.id.track_detail_share:
confirmShare(trackId);
return true;
case R.id.track_detail_markers:
intent = IntentUtils.newIntent(this, MarkerListActivity.class)
@@ -439,32 +426,17 @@ public class TrackDetailActivity extends AbstractSendToGoogleActivity
@Override
public void onConfirmDone(int confirmId, long confirmTrackId) {
SendRequest sendRequest;
Intent intent;
switch (confirmId) {
case R.string.confirm_play_earth_key:
AnalyticsUtils.sendPageViews(this, "/action/play");
intent = IntentUtils.newIntent(this, SaveActivity.class)
Intent intent = IntentUtils.newIntent(this, SaveActivity.class)
.putExtra(SaveActivity.EXTRA_TRACK_ID, confirmTrackId)
.putExtra(SaveActivity.EXTRA_TRACK_FILE_FORMAT, (Parcelable) TrackFileFormat.KML)
.putExtra(SaveActivity.EXTRA_PLAY_TRACK, true);
startActivity(intent);
break;
case R.string.confirm_share_maps_key:
AnalyticsUtils.sendPageViews(this, "/action/share_maps");
sendRequest = new SendRequest(trackId);
sendRequest.setSendMaps(true);
sendRequest.setMapsShare(true);
sendToGoogle(sendRequest);
break;
case R.string.confirm_share_drive_key:
AnalyticsUtils.sendPageViews(this, "/action/share_drive");
sendRequest = new SendRequest(trackId);
sendRequest.setSendDrive(true);
sendRequest.setDriveShare(true);
sendToGoogle(sendRequest);
break;
default:
super.onConfirmDone(confirmId, confirmTrackId);
}
}
@@ -576,11 +548,8 @@ public class TrackDetailActivity extends AbstractSendToGoogleActivity
if (playMenuItem != null) {
playMenuItem.setVisible(!isRecording);
}
if (shareMapsMenuItem != null) {
shareMapsMenuItem.setVisible(!isRecording);
}
if (shareDriveMenuItem != null && shareDriveMenuItem.isEnabled()) {
shareDriveMenuItem.setVisible(!isRecording);
if (shareMenuItem != null && shareMenuItem.isEnabled()) {
shareMenuItem.setVisible(!isRecording);
}
if (sendGoogleMenuItem != null) {
sendGoogleMenuItem.setVisible(!isRecording);
@@ -23,8 +23,6 @@ import com.google.android.apps.mytracks.content.TrackDataListener;
import com.google.android.apps.mytracks.content.TrackDataType;
import com.google.android.apps.mytracks.content.TracksColumns;
import com.google.android.apps.mytracks.content.Waypoint;
import com.google.android.apps.mytracks.fragments.ConfirmDialogFragment;
import com.google.android.apps.mytracks.fragments.ConfirmDialogFragment.ConfirmCaller;
import com.google.android.apps.mytracks.fragments.DeleteAllTrackDialogFragment;
import com.google.android.apps.mytracks.fragments.DeleteOneTrackDialogFragment;
import com.google.android.apps.mytracks.fragments.DeleteOneTrackDialogFragment.DeleteOneTrackCaller;
@@ -96,7 +94,7 @@ import java.util.Locale;
* @author Leif Hendrik Wilden
*/
public class TrackListActivity extends AbstractSendToGoogleActivity
implements EulaCaller, EnableSyncCaller, ConfirmCaller, DeleteOneTrackCaller {
implements EulaCaller, EnableSyncCaller, DeleteOneTrackCaller {
private static final String TAG = TrackListActivity.class.getSimpleName();
private static final String START_GPS_KEY = "start_gps_key";
@@ -204,7 +202,7 @@ public class TrackListActivity extends AbstractSendToGoogleActivity
public void onPrepare(Menu menu, int position, long id) {
Track track = myTracksProviderUtils.getTrack(id);
menu.findItem(R.id.list_context_menu_share_drive).setVisible(!track.isSharedWithMe());
menu.findItem(R.id.list_context_menu_share).setVisible(!track.isSharedWithMe());
menu.findItem(R.id.list_context_menu_show_on_map).setVisible(false);
menu.findItem(R.id.list_context_menu_edit).setVisible(!track.isSharedWithMe());
menu.findItem(R.id.list_context_menu_delete).setVisible(true);
@@ -655,20 +653,6 @@ public class TrackListActivity extends AbstractSendToGoogleActivity
return super.onKeyUp(keyCode, event);
}
@Override
public void onConfirmDone(int confirmId, long trackId) {
switch (confirmId) {
case R.string.confirm_share_drive_key:
AnalyticsUtils.sendPageViews(this, "/action/share_drive");
SendRequest sendRequest = new SendRequest(trackId);
sendRequest.setSendDrive(true);
sendRequest.setDriveShare(true);
sendToGoogle(sendRequest);
break;
default:
}
}
@Override
public TrackRecordingServiceConnection getTrackRecordingServiceConnection() {
return trackRecordingServiceConnection;
@@ -828,11 +812,8 @@ public class TrackListActivity extends AbstractSendToGoogleActivity
private boolean handleContextItem(int itemId, long trackId) {
Intent intent;
switch (itemId) {
case R.id.list_context_menu_share_drive:
ConfirmDialogFragment.newInstance(R.string.confirm_share_drive_key,
PreferencesUtils.CONFIRM_SHARE_DRIVE_DEFAULT,
getString(R.string.share_track_drive_confirm_message), trackId)
.show(getSupportFragmentManager(), ConfirmDialogFragment.CONFIRM_DIALOG_TAG);
case R.id.list_context_menu_share:
confirmShare(trackId);
return true;
case R.id.list_context_menu_show_on_map:
intent = IntentUtils.newIntent(this, TrackDetailActivity.class)
@@ -17,12 +17,14 @@
package com.google.android.apps.mytracks.settings;
import com.google.android.apps.mytracks.util.DialogUtils;
import com.google.android.apps.mytracks.util.PreferencesUtils;
import com.google.android.maps.mytracks.R;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
@@ -35,6 +37,7 @@ public class SharingSettingsActivity extends AbstractSettingsActivity {
private static final int DIALOG_CONFIRM_ALLOW_ACCESS_ID = 0;
private ListPreference shareTrackListPreference;
private CheckBoxPreference allowAccessCheckBoxPreference;
@SuppressWarnings("deprecation")
@@ -42,6 +45,14 @@ public class SharingSettingsActivity extends AbstractSettingsActivity {
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
addPreferencesFromResource(R.xml.sharing_settings);
shareTrackListPreference = (ListPreference) findPreference(getString(R.string.share_track_key));
String value = PreferencesUtils.getString(
this, R.string.share_track_key, PreferencesUtils.SHARE_TRACK_DEFAULT);
String[] values = getResources().getStringArray(R.array.share_track_values);
String[] options = getResources().getStringArray(R.array.share_track_options);
configureListPreference(shareTrackListPreference, options, options, values, value, null);
allowAccessCheckBoxPreference = (CheckBoxPreference) findPreference(
getString(R.string.allow_access_key));
@@ -94,6 +94,7 @@ public class PreferencesUtils {
public static final boolean SEND_TO_SPREADSHEETS_DEFAULT = false;
public static final String SENSOR_TYPE_DEFAULT = "NONE";
public static final String SHARE_TRACK_DEFAULT = "DRIVE";
public static final int SPLIT_FREQUENCY_DEFAULT = 0;
public static final boolean STATS_SHOW_COORDINATE_DEFAULT = false;
public static final boolean STATS_SHOW_ELEVATION_DEFAULT = false;