For "Shared with me" tracks, do not allow sending to Google Drive,

do not allow sharing with Google Drive.

For Drive tracks, exclude shared tracks.
This commit is contained in:
Jimmy Shih
2013-02-05 13:06:10 -08:00
parent 69f2b18f10
commit c0ec72f66a
5 changed files with 56 additions and 36 deletions
@@ -21,7 +21,7 @@ limitations under the License.
android:layout_width="match_parent" android:layout_width="match_parent"
android:padding="8dp" android:padding="8dp"
android:stretchColumns="1" > android:stretchColumns="1" >
<TableRow> <TableRow android:id="@+id/choose_upload_service_drive_options">
<ImageView <ImageView
android:contentDescription="@string/send_google_drive" android:contentDescription="@string/send_google_drive"
android:src="@drawable/google_drive_icon" android:src="@drawable/google_drive_icon"
@@ -297,11 +297,13 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
Track track = myTracksProviderUtils.getTrack(trackId); Track track = myTracksProviderUtils.getTrack(trackId);
menu.findItem(R.id.track_detail_edit).setVisible(!track.isSharedWithMe()); menu.findItem(R.id.track_detail_edit).setVisible(!track.isSharedWithMe());
shareDriveMenuItem = menu.findItem(R.id.track_detail_share_drive);
shareDriveMenuItem.setEnabled(!track.isSharedWithMe());
shareDriveMenuItem.setVisible(!track.isSharedWithMe());
insertMarkerMenuItem = menu.findItem(R.id.track_detail_insert_marker); insertMarkerMenuItem = menu.findItem(R.id.track_detail_insert_marker);
playMenuItem = menu.findItem(R.id.track_detail_play); playMenuItem = menu.findItem(R.id.track_detail_play);
shareMenuItem = menu.findItem(R.id.track_detail_share); shareMenuItem = menu.findItem(R.id.track_detail_share);
shareDriveMenuItem = menu.findItem(R.id.track_detail_share_drive);
sendGoogleMenuItem = menu.findItem(R.id.track_detail_send_google); sendGoogleMenuItem = menu.findItem(R.id.track_detail_send_google);
saveMenuItem = menu.findItem(R.id.track_detail_save); saveMenuItem = menu.findItem(R.id.track_detail_save);
voiceFrequencyMenuItem = menu.findItem(R.id.track_detail_voice_frequency); voiceFrequencyMenuItem = menu.findItem(R.id.track_detail_voice_frequency);
@@ -398,8 +400,9 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
return true; return true;
case R.id.track_detail_send_google: case R.id.track_detail_send_google:
AnalyticsUtils.sendPageViews(this, "/action/send_google"); AnalyticsUtils.sendPageViews(this, "/action/send_google");
ChooseUploadServiceDialogFragment.newInstance(new SendRequest(trackId)).show( Track track = myTracksProviderUtils.getTrack(trackId);
getSupportFragmentManager(), ChooseUploadServiceDialogFragment.newInstance(
new SendRequest(trackId), track.isSharedWithMe()).show(getSupportFragmentManager(),
ChooseUploadServiceDialogFragment.CHOOSE_UPLOAD_SERVICE_DIALOG_TAG); ChooseUploadServiceDialogFragment.CHOOSE_UPLOAD_SERVICE_DIALOG_TAG);
return true; return true;
case R.id.track_detail_save_gpx: case R.id.track_detail_save_gpx:
@@ -524,7 +527,7 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
if (shareMenuItem != null) { if (shareMenuItem != null) {
shareMenuItem.setVisible(!isRecording); shareMenuItem.setVisible(!isRecording);
} }
if (shareDriveMenuItem != null) { if (shareDriveMenuItem != null && shareDriveMenuItem.isEnabled()) {
shareDriveMenuItem.setVisible(!isRecording); shareDriveMenuItem.setVisible(!isRecording);
} }
if (sendGoogleMenuItem != null) { if (sendGoogleMenuItem != null) {
@@ -48,10 +48,12 @@ public class ChooseUploadServiceDialogFragment extends DialogFragment {
public static final String CHOOSE_UPLOAD_SERVICE_DIALOG_TAG = "chooseUploadService"; public static final String CHOOSE_UPLOAD_SERVICE_DIALOG_TAG = "chooseUploadService";
private static final String KEY_SEND_REQUEST = "sendRequest"; private static final String KEY_SEND_REQUEST = "sendRequest";
private static final String KEY_HIDE_DRIVE = "hideDrive";
public static ChooseUploadServiceDialogFragment newInstance(SendRequest sendRequest) { public static ChooseUploadServiceDialogFragment newInstance(SendRequest sendRequest, boolean hideDrive) {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable(KEY_SEND_REQUEST, sendRequest); bundle.putParcelable(KEY_SEND_REQUEST, sendRequest);
bundle.putBoolean(KEY_HIDE_DRIVE, hideDrive);
ChooseUploadServiceDialogFragment chooseUploadServiceDialogFragment = new ChooseUploadServiceDialogFragment(); ChooseUploadServiceDialogFragment chooseUploadServiceDialogFragment = new ChooseUploadServiceDialogFragment();
chooseUploadServiceDialogFragment.setArguments(bundle); chooseUploadServiceDialogFragment.setArguments(bundle);
@@ -60,6 +62,7 @@ public class ChooseUploadServiceDialogFragment extends DialogFragment {
private FragmentActivity activity; private FragmentActivity activity;
private SendRequest sendRequest; private SendRequest sendRequest;
private boolean hideDrive;
private CheckBox driveCheckBox; private CheckBox driveCheckBox;
private CheckBox mapsCheckBox; private CheckBox mapsCheckBox;
@@ -73,9 +76,13 @@ public class ChooseUploadServiceDialogFragment extends DialogFragment {
public Dialog onCreateDialog(Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) {
activity = getActivity(); activity = getActivity();
sendRequest = getArguments().getParcelable(KEY_SEND_REQUEST); sendRequest = getArguments().getParcelable(KEY_SEND_REQUEST);
hideDrive = getArguments().getBoolean(KEY_HIDE_DRIVE);
View view = activity.getLayoutInflater().inflate(R.layout.choose_upload_service, null); View view = activity.getLayoutInflater().inflate(R.layout.choose_upload_service, null);
view.findViewById(R.id.choose_upload_service_drive_options)
.setVisibility(hideDrive ? View.GONE : View.VISIBLE);
driveCheckBox = (CheckBox) view.findViewById(R.id.choose_upload_service_drive); driveCheckBox = (CheckBox) view.findViewById(R.id.choose_upload_service_drive);
mapsCheckBox = (CheckBox) view.findViewById(R.id.choose_upload_service_maps); mapsCheckBox = (CheckBox) view.findViewById(R.id.choose_upload_service_maps);
fusionTablesCheckBox = (CheckBox) view.findViewById(R.id.choose_upload_service_fusion_tables); fusionTablesCheckBox = (CheckBox) view.findViewById(R.id.choose_upload_service_fusion_tables);
@@ -131,7 +138,7 @@ public class ChooseUploadServiceDialogFragment extends DialogFragment {
activity, R.string.send_to_fusion_tables_key, fusionTablesCheckBox.isChecked()); activity, R.string.send_to_fusion_tables_key, fusionTablesCheckBox.isChecked());
PreferencesUtils.setBoolean( PreferencesUtils.setBoolean(
activity, R.string.send_to_docs_key, docsCheckBox.isChecked()); activity, R.string.send_to_docs_key, docsCheckBox.isChecked());
if (driveCheckBox.isChecked() || mapsCheckBox.isChecked() if (sendDrive() || mapsCheckBox.isChecked()
|| fusionTablesCheckBox.isChecked() || docsCheckBox.isChecked()) { || fusionTablesCheckBox.isChecked() || docsCheckBox.isChecked()) {
startNextActivity(); startNextActivity();
} else { } else {
@@ -153,7 +160,7 @@ public class ChooseUploadServiceDialogFragment extends DialogFragment {
* Starts the next activity, {@link AccountChooserActivity}. * Starts the next activity, {@link AccountChooserActivity}.
*/ */
private void startNextActivity() { private void startNextActivity() {
sendRequest.setSendDrive(driveCheckBox.isChecked()); sendRequest.setSendDrive(sendDrive());
sendRequest.setSendMaps(mapsCheckBox.isChecked()); sendRequest.setSendMaps(mapsCheckBox.isChecked());
sendRequest.setSendFusionTables(fusionTablesCheckBox.isChecked()); sendRequest.setSendFusionTables(fusionTablesCheckBox.isChecked());
sendRequest.setSendDocs(docsCheckBox.isChecked()); sendRequest.setSendDocs(docsCheckBox.isChecked());
@@ -181,4 +188,11 @@ public class ChooseUploadServiceDialogFragment extends DialogFragment {
AnalyticsUtils.sendPageViews(activity, "/send/docs"); AnalyticsUtils.sendPageViews(activity, "/send/docs");
} }
} }
/**
* True to send to Google Drive.
*/
private boolean sendDrive() {
return !hideDrive && driveCheckBox.isChecked();
}
} }
@@ -334,14 +334,14 @@ public class SendRequest implements Parcelable {
out.writeByte((byte) (docsSuccess ? 1 : 0)); out.writeByte((byte) (docsSuccess ? 1 : 0));
} }
public static final Parcelable.Creator<SendRequest> CREATOR = new Parcelable.Creator< public static final Parcelable.Creator<SendRequest>
SendRequest>() { CREATOR = new Parcelable.Creator<SendRequest>() {
public SendRequest createFromParcel(Parcel in) { public SendRequest createFromParcel(Parcel in) {
return new SendRequest(in); return new SendRequest(in);
} }
public SendRequest[] newArray(int size) { public SendRequest[] newArray(int size) {
return new SendRequest[size]; return new SendRequest[size];
} }
}; };
} }
@@ -85,7 +85,7 @@ public class SyncUtils {
// Get My Tracks folder KML files // Get My Tracks folder KML files
public static final String MY_TRACKS_FOLDER_FILES_QUERY = "'%s' in parents and mimeType = '" public static final String MY_TRACKS_FOLDER_FILES_QUERY = "'%s' in parents and mimeType = '"
+ KML_MIME_TYPE + "' and trashed = false"; + KML_MIME_TYPE + "' and trashed = false and not sharedWithMe";
// Get shared with me KML files // Get shared with me KML files
public static final String SHARED_WITH_ME_FILES_QUERY = "sharedWithMe and mimeType = '" public static final String SHARED_WITH_ME_FILES_QUERY = "sharedWithMe and mimeType = '"
@@ -98,7 +98,7 @@ public class SyncUtils {
@VisibleForTesting @VisibleForTesting
public static final String MY_TRACKS_FOLDER_QUERY = public static final String MY_TRACKS_FOLDER_QUERY =
"'root' in parents and title = '%s' and mimeType = '" + FOLDER_MIME_TYPE "'root' in parents and title = '%s' and mimeType = '" + FOLDER_MIME_TYPE
+ "' and trashed = false"; + "' and trashed = false and not sharedWithMe";
private static final String TAG = SyncUtils.class.getSimpleName(); private static final String TAG = SyncUtils.class.getSimpleName();
private static final String SYNC_AUTHORITY = "com.google.android.maps.mytracks"; private static final String SYNC_AUTHORITY = "com.google.android.maps.mytracks";
@@ -310,6 +310,9 @@ public class SyncUtils {
if (!SyncUtils.KML_MIME_TYPE.equals(driveFile.getMimeType())) { if (!SyncUtils.KML_MIME_TYPE.equals(driveFile.getMimeType())) {
return false; return false;
} }
if (driveFile.getSharedWithMeDate() != null) {
return false;
}
for (ParentReference parentReference : driveFile.getParents()) { for (ParentReference parentReference : driveFile.getParents()) {
String id = parentReference.getId(); String id = parentReference.getId();
if (id != null && id.equals(folderId)) { if (id != null && id.equals(folderId)) {