diff --git a/MyTracks/AndroidManifest.xml b/MyTracks/AndroidManifest.xml index 0cd17c8ae..256113e91 100755 --- a/MyTracks/AndroidManifest.xml +++ b/MyTracks/AndroidManifest.xml @@ -211,7 +211,6 @@ limitations under the License. android:label="@string/maps_list_title" android:name="com.google.android.apps.mytracks.io.maps.ChooseMapActivity" /> - diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/sendtogoogle/AccountChooserActivity.java b/MyTracks/src/com/google/android/apps/mytracks/AbstractSendToGoogleActivity.java similarity index 94% rename from MyTracks/src/com/google/android/apps/mytracks/io/sendtogoogle/AccountChooserActivity.java rename to MyTracks/src/com/google/android/apps/mytracks/AbstractSendToGoogleActivity.java index 264a9a17b..c5ab138a1 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/io/sendtogoogle/AccountChooserActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/AbstractSendToGoogleActivity.java @@ -1,12 +1,12 @@ /* * 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 @@ -14,9 +14,8 @@ * the License. */ -package com.google.android.apps.mytracks.io.sendtogoogle; +package com.google.android.apps.mytracks; -import com.google.android.apps.mytracks.Constants; import com.google.android.apps.mytracks.fragments.AddEmailsDialogFragment; import com.google.android.apps.mytracks.fragments.AddEmailsDialogFragment.AddEmailsCaller; import com.google.android.apps.mytracks.fragments.ChooseAccountDialogFragment; @@ -28,6 +27,10 @@ import com.google.android.apps.mytracks.io.fusiontables.SendFusionTablesActivity import com.google.android.apps.mytracks.io.gdata.maps.MapsConstants; 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.sendtogoogle.PermissionCallback; +import com.google.android.apps.mytracks.io.sendtogoogle.SendRequest; +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.util.IntentUtils; import com.google.android.apps.mytracks.util.PreferencesUtils; @@ -42,28 +45,73 @@ import android.accounts.OperationCanceledException; import android.app.Activity; import android.content.Intent; import android.os.Bundle; -import android.support.v4.app.FragmentActivity; import android.util.Log; import android.widget.Toast; import java.io.IOException; /** - * A chooser to select an account. + * An abstract class for sending a track to Google services. * * @author Jimmy Shih */ -public class AccountChooserActivity extends FragmentActivity +public abstract class AbstractSendToGoogleActivity extends AbstractMyTracksActivity implements ChooseAccountCaller, AddEmailsCaller, ChooseActivityCaller { - private static final String TAG = AccountChooserActivity.class.getSimpleName(); + private static final String TAG = AbstractMyTracksActivity.class.getSimpleName(); private SendRequest sendRequest; - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - sendRequest = getIntent().getParcelableExtra(SendRequest.SEND_REQUEST_KEY); + private PermissionCallback driveCallback = new PermissionCallback() { + @Override + public void onSuccess() { + getPermission(MapsConstants.SERVICE_NAME, sendRequest.isSendMaps(), mapsCallback); + } + + @Override + public void onFailure() { + handleNoAccountPermission(); + } + }; + + private PermissionCallback mapsCallback = new PermissionCallback() { + @Override + public void onSuccess() { + checkFusionTablesPermission(); + } + + @Override + public void onFailure() { + handleNoAccountPermission(); + } + }; + + private PermissionCallback fusionTablesCallback = new PermissionCallback() { + @Override + public void onSuccess() { + checkSpreadsheetPermission(); + } + + @Override + public void onFailure() { + handleNoAccountPermission(); + } + }; + + private PermissionCallback spreadsheetsCallback = new PermissionCallback() { + @Override + public void onSuccess() { + startNextActivity(); + } + + @Override + public void onFailure() { + handleNoAccountPermission(); + } + }; + + public void sendToGoogle(SendRequest request) { + sendRequest = request; new ChooseAccountDialogFragment().show( getSupportFragmentManager(), ChooseAccountDialogFragment.CHOOSE_ACCOUNT_DIALOG_TAG); } @@ -100,12 +148,10 @@ public class AccountChooserActivity extends FragmentActivity } } - @Override public void onChooseAccountDone() { String googleAccount = PreferencesUtils.getString( this, R.string.google_account_key, PreferencesUtils.GOOGLE_ACCOUNT_DEFAULT); if (googleAccount == null || googleAccount.equals(PreferencesUtils.GOOGLE_ACCOUNT_DEFAULT)) { - finish(); return; } sendRequest.setAccount(new Account(googleAccount, Constants.ACCOUNT_TYPE)); @@ -120,7 +166,6 @@ public class AccountChooserActivity extends FragmentActivity .putExtra(SendRequest.SEND_REQUEST_KEY, sendRequest); startActivity(intent); } - finish(); } @Override @@ -133,7 +178,6 @@ public class AccountChooserActivity extends FragmentActivity .putExtra(SendRequest.SEND_REQUEST_KEY, sendRequest); startActivity(intent); } - finish(); } /** @@ -185,54 +229,6 @@ public class AccountChooserActivity extends FragmentActivity } } - private PermissionCallback spreadsheetsCallback = new PermissionCallback() { - @Override - public void onSuccess() { - startNextActivity(); - } - - @Override - public void onFailure() { - handleNoAccountPermission(); - } - }; - - private PermissionCallback fusionTablesCallback = new PermissionCallback() { - @Override - public void onSuccess() { - checkSpreadsheetPermission(); - } - - @Override - public void onFailure() { - handleNoAccountPermission(); - } - }; - - private PermissionCallback mapsCallback = new PermissionCallback() { - @Override - public void onSuccess() { - checkFusionTablesPermission(); - } - - @Override - public void onFailure() { - handleNoAccountPermission(); - } - }; - - private PermissionCallback driveCallback = new PermissionCallback() { - @Override - public void onSuccess() { - getPermission(MapsConstants.SERVICE_NAME, sendRequest.isSendMaps(), mapsCallback); - } - - @Override - public void onFailure() { - handleNoAccountPermission(); - } - }; - /** * Gets the user permission to access a service. * @@ -315,7 +311,6 @@ public class AccountChooserActivity extends FragmentActivity Intent intent = IntentUtils.newIntent(this, next) .putExtra(SendRequest.SEND_REQUEST_KEY, sendRequest); startActivity(intent); - finish(); } /** @@ -323,6 +318,5 @@ public class AccountChooserActivity extends FragmentActivity */ private void handleNoAccountPermission() { Toast.makeText(this, R.string.send_google_no_account_permission, Toast.LENGTH_LONG).show(); - finish(); } -} \ No newline at end of file +} diff --git a/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java b/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java index 5256c32d3..9a35b4bf9 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java @@ -30,11 +30,11 @@ 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.AccountChooserActivity; 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; @@ -78,7 +78,7 @@ import java.util.SortedSet; * * @author Rodrigo Damazio */ -public class SearchListActivity extends AbstractMyTracksActivity +public class SearchListActivity extends AbstractSendToGoogleActivity implements ConfirmCaller, DeleteOneTrackCaller, DeleteOneMarkerCaller { private static final String TAG = SearchListActivity.class.getSimpleName(); @@ -514,12 +514,11 @@ public class SearchListActivity extends AbstractMyTracksActivity 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); - Intent intent = IntentUtils.newIntent(this, AccountChooserActivity.class) - .putExtra(SendRequest.SEND_REQUEST_KEY, sendRequest); - startActivity(intent); + sendToGoogle(sendRequest); break; default: } diff --git a/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java b/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java index 2ad895d8a..ecb862f19 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java @@ -23,6 +23,7 @@ import com.google.android.apps.mytracks.content.Waypoint; import com.google.android.apps.mytracks.content.WaypointCreationRequest; 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; @@ -33,7 +34,6 @@ import com.google.android.apps.mytracks.fragments.MyTracksMapFragment; import com.google.android.apps.mytracks.fragments.StatsFragment; import com.google.android.apps.mytracks.io.file.SaveActivity; import com.google.android.apps.mytracks.io.file.TrackFileFormat; -import com.google.android.apps.mytracks.io.sendtogoogle.AccountChooserActivity; import com.google.android.apps.mytracks.io.sendtogoogle.SendRequest; import com.google.android.apps.mytracks.services.TrackRecordingServiceConnection; import com.google.android.apps.mytracks.settings.SettingsActivity; @@ -70,8 +70,8 @@ import java.util.Locale; * @author Leif Hendrik Wilden * @author Rodrigo Damazio */ -public class TrackDetailActivity extends AbstractMyTracksActivity - implements ConfirmCaller, DeleteOneTrackCaller { +public class TrackDetailActivity extends AbstractSendToGoogleActivity + implements ConfirmCaller, ChooseUploadServiceCaller, DeleteOneTrackCaller { public static final String EXTRA_TRACK_ID = "track_id"; public static final String EXTRA_MARKER_ID = "marker_id"; @@ -374,8 +374,8 @@ public class TrackDetailActivity extends AbstractMyTracksActivity case R.id.track_detail_send_google: AnalyticsUtils.sendPageViews(this, "/action/send_google"); Track track = myTracksProviderUtils.getTrack(trackId); - ChooseUploadServiceDialogFragment.newInstance( - new SendRequest(trackId), track.isSharedWithMe()).show(getSupportFragmentManager(), + ChooseUploadServiceDialogFragment.newInstance(track.isSharedWithMe()).show( + getSupportFragmentManager(), ChooseUploadServiceDialogFragment.CHOOSE_UPLOAD_SERVICE_DIALOG_TAG); return true; case R.id.track_detail_save_gpx: @@ -446,23 +446,43 @@ public class TrackDetailActivity extends AbstractMyTracksActivity sendRequest = new SendRequest(trackId); sendRequest.setSendMaps(true); sendRequest.setMapsShare(true); - intent = IntentUtils.newIntent(this, AccountChooserActivity.class) - .putExtra(SendRequest.SEND_REQUEST_KEY, sendRequest); - startActivity(intent); + 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); - intent = IntentUtils.newIntent(this, AccountChooserActivity.class) - .putExtra(SendRequest.SEND_REQUEST_KEY, sendRequest); - startActivity(intent); + sendToGoogle(sendRequest); break; default: } } + @Override + public void onChooseUploadServiceDone(boolean sendDrive, boolean sendMaps, + boolean sendFusionTables, boolean sendSpreadsheets, boolean mapsExistingMap) { + SendRequest sendRequest = new SendRequest(trackId); + sendRequest.setSendDrive(sendDrive); + sendRequest.setSendMaps(sendMaps); + sendRequest.setSendFusionTables(sendFusionTables); + sendRequest.setSendSpreadsheets(sendSpreadsheets); + sendRequest.setMapsExistingMap(mapsExistingMap); + if (sendDrive) { + AnalyticsUtils.sendPageViews(this, "/send/drive"); + } + if (sendMaps) { + AnalyticsUtils.sendPageViews(this, "/send/maps"); + } + if (sendFusionTables) { + AnalyticsUtils.sendPageViews(this, "/send/fusion_tables"); + } + if (sendSpreadsheets) { + AnalyticsUtils.sendPageViews(this, "/send/spreadsheets"); + } + sendToGoogle(sendRequest); + } + @Override public TrackRecordingServiceConnection getTrackRecordingServiceConnection() { return trackRecordingServiceConnection; diff --git a/MyTracks/src/com/google/android/apps/mytracks/TrackListActivity.java b/MyTracks/src/com/google/android/apps/mytracks/TrackListActivity.java index ccf7626eb..0503ed4cb 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/TrackListActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/TrackListActivity.java @@ -33,7 +33,6 @@ import com.google.android.apps.mytracks.fragments.WelcomeDialogFragment; import com.google.android.apps.mytracks.io.file.ImportActivity; import com.google.android.apps.mytracks.io.file.SaveActivity; import com.google.android.apps.mytracks.io.file.TrackFileFormat; -import com.google.android.apps.mytracks.io.sendtogoogle.AccountChooserActivity; import com.google.android.apps.mytracks.io.sendtogoogle.SendRequest; import com.google.android.apps.mytracks.io.sync.SyncUtils; import com.google.android.apps.mytracks.services.ITrackRecordingService; @@ -91,7 +90,7 @@ import java.util.Locale; * * @author Leif Hendrik Wilden */ -public class TrackListActivity extends AbstractMyTracksActivity +public class TrackListActivity extends AbstractSendToGoogleActivity implements ConfirmCaller, DeleteOneTrackCaller { private static final String TAG = TrackListActivity.class.getSimpleName(); @@ -642,12 +641,11 @@ public class TrackListActivity extends AbstractMyTracksActivity 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); - Intent intent = IntentUtils.newIntent(this, AccountChooserActivity.class) - .putExtra(SendRequest.SEND_REQUEST_KEY, sendRequest); - startActivity(intent); + sendToGoogle(sendRequest); break; default: } diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/AddEmailsDialogFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/AddEmailsDialogFragment.java index c4491ea10..bbf6ce4f9 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/fragments/AddEmailsDialogFragment.java +++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/AddEmailsDialogFragment.java @@ -108,28 +108,16 @@ public class AddEmailsDialogFragment extends DialogFragment { }); multiAutoCompleteTextView.setAdapter(adapter); - return new AlertDialog.Builder(activity).setNegativeButton( - R.string.generic_cancel, new DialogInterface.OnClickListener() { - + return new AlertDialog.Builder(activity).setNegativeButton(R.string.generic_cancel, null) + .setPositiveButton(R.string.generic_ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - caller.onAddEmailsDone(null); + String acl = multiAutoCompleteTextView.getText().toString(); + caller.onAddEmailsDone(acl); } - }).setPositiveButton(R.string.generic_ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - String acl = multiAutoCompleteTextView.getText().toString(); - caller.onAddEmailsDone(acl); - } - }).setTitle(R.string.share_track_add_emails_title).setView(view).create(); + }).setTitle(R.string.share_track_add_emails_title).setView(view).create(); } - @Override - public void onCancel(DialogInterface dialog) { - super.onCancel(dialog); - caller.onAddEmailsDone(null); - } - /** * Gets the cursor * diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseAccountDialogFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseAccountDialogFragment.java index b8818a2df..b3bf3618d 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseAccountDialogFragment.java +++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseAccountDialogFragment.java @@ -94,38 +94,22 @@ public class ChooseAccountDialogFragment extends DialogFragment { if (accounts.length == 0) { return new AlertDialog.Builder(getActivity()).setMessage( R.string.send_google_no_account_message).setTitle(R.string.send_google_no_account_title) - .setPositiveButton(R.string.generic_ok, new OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - caller.onChooseAccountDone(); - } - }).create(); + .setPositiveButton(R.string.generic_ok, null).create(); } String[] choices = new String[accounts.length]; for (int i = 0; i < accounts.length; i++) { choices[i] = accounts[i].name; } - return new AlertDialog.Builder(getActivity()).setNegativeButton( - R.string.generic_cancel, new OnClickListener() { + return new AlertDialog.Builder(getActivity()).setNegativeButton(R.string.generic_cancel, null) + .setPositiveButton(R.string.generic_ok, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { + int position = ((AlertDialog) dialog).getListView().getCheckedItemPosition(); + PreferencesUtils.setString( + getActivity(), R.string.google_account_key, accounts[position].name); caller.onChooseAccountDone(); } - }).setPositiveButton(R.string.generic_ok, new OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - int position = ((AlertDialog) dialog).getListView().getCheckedItemPosition(); - PreferencesUtils.setString( - getActivity(), R.string.google_account_key, accounts[position].name); - caller.onChooseAccountDone(); - } - }).setSingleChoiceItems(choices, 0, null).setTitle(R.string.send_google_choose_account_title) - .create(); - } - - @Override - public void onCancel(DialogInterface dialog) { - super.onCancel(dialog); - caller.onChooseAccountDone(); + }).setSingleChoiceItems(choices, 0, null) + .setTitle(R.string.send_google_choose_account_title).create(); } } \ No newline at end of file diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseActivityDialogFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseActivityDialogFragment.java index aa8eeec1c..06262ca8f 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseActivityDialogFragment.java +++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseActivityDialogFragment.java @@ -120,6 +120,7 @@ public class ChooseActivityDialogFragment extends DialogFragment { DisplayInfo displayInfo = (DisplayInfo) alertDialog.getListView() .getItemAtPosition(which); ActivityInfo activityInfo = displayInfo.resolveInfo.activityInfo; + dismiss(); caller.onChooseActivityDone( activityInfo.applicationInfo.packageName, activityInfo.name); } diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseUploadServiceDialogFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseUploadServiceDialogFragment.java index b9a26b730..6ebe56da0 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseUploadServiceDialogFragment.java +++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseUploadServiceDialogFragment.java @@ -16,17 +16,13 @@ package com.google.android.apps.mytracks.fragments; -import com.google.android.apps.mytracks.io.sendtogoogle.AccountChooserActivity; -import com.google.android.apps.mytracks.io.sendtogoogle.SendRequest; -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.maps.mytracks.R; +import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; -import android.content.Intent; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentActivity; @@ -45,15 +41,26 @@ import android.widget.Toast; */ public class ChooseUploadServiceDialogFragment extends DialogFragment { + /** + * Interface for caller of this dialog fragment. + * + * @author Jimmy Shih + */ + public interface ChooseUploadServiceCaller { + + /** + * Called when choose upload service is done. + */ + public void onChooseUploadServiceDone(boolean sendDrive, boolean sendMaps, + boolean sendFusionTables, boolean sendSpreadsheets, boolean mapsExistingMap); + } + public static final String CHOOSE_UPLOAD_SERVICE_DIALOG_TAG = "chooseUploadService"; - private static final String KEY_SEND_REQUEST = "sendRequest"; private static final String KEY_HIDE_DRIVE = "hideDrive"; - public static ChooseUploadServiceDialogFragment newInstance( - SendRequest sendRequest, boolean hideDrive) { + public static ChooseUploadServiceDialogFragment newInstance(boolean hideDrive) { Bundle bundle = new Bundle(); - bundle.putParcelable(KEY_SEND_REQUEST, sendRequest); bundle.putBoolean(KEY_HIDE_DRIVE, hideDrive); ChooseUploadServiceDialogFragment chooseUploadServiceDialogFragment = new ChooseUploadServiceDialogFragment(); @@ -61,8 +68,8 @@ public class ChooseUploadServiceDialogFragment extends DialogFragment { return chooseUploadServiceDialogFragment; } + private ChooseUploadServiceCaller caller; private FragmentActivity activity; - private SendRequest sendRequest; private boolean hideDrive; private CheckBox driveCheckBox; @@ -73,10 +80,20 @@ public class ChooseUploadServiceDialogFragment extends DialogFragment { private TableRow mapsOptionTableRow; private RadioButton existingMapRadioButton; + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + try { + caller = (ChooseUploadServiceCaller) activity; + } catch (ClassCastException e) { + throw new ClassCastException(activity.toString() + " must implement " + + ChooseUploadServiceCaller.class.getSimpleName()); + } + } + @Override public Dialog onCreateDialog(Bundle savedInstanceState) { activity = getActivity(); - sendRequest = getArguments().getParcelable(KEY_SEND_REQUEST); hideDrive = getArguments().getBoolean(KEY_HIDE_DRIVE); View view = activity.getLayoutInflater().inflate(R.layout.choose_upload_service, null); @@ -151,7 +168,9 @@ public class ChooseUploadServiceDialogFragment extends DialogFragment { activity, R.string.send_to_spreadsheets_key, spreadsheetsCheckBox.isChecked()); if (sendDrive() || mapsCheckBox.isChecked() || fusionTablesCheckBox.isChecked() || spreadsheetsCheckBox.isChecked()) { - startNextActivity(); + caller.onChooseUploadServiceDone(sendDrive(), mapsCheckBox.isChecked(), + fusionTablesCheckBox.isChecked(), spreadsheetsCheckBox.isChecked(), + existingMapRadioButton.isChecked()); } else { Toast.makeText(activity, R.string.send_google_no_service_selected, Toast.LENGTH_LONG) .show(); @@ -167,39 +186,6 @@ public class ChooseUploadServiceDialogFragment extends DialogFragment { mapsOptionTableRow.setVisibility(mapsCheckBox.isChecked() ? View.VISIBLE : View.GONE); } - /** - * Starts the next activity, {@link AccountChooserActivity}. - */ - private void startNextActivity() { - sendRequest.setSendDrive(sendDrive()); - sendRequest.setSendMaps(mapsCheckBox.isChecked()); - sendRequest.setSendFusionTables(fusionTablesCheckBox.isChecked()); - sendRequest.setSendSpreadsheets(spreadsheetsCheckBox.isChecked()); - sendRequest.setMapsExistingMap(existingMapRadioButton.isChecked()); - sendStats(); - Intent intent = IntentUtils.newIntent(activity, AccountChooserActivity.class) - .putExtra(SendRequest.SEND_REQUEST_KEY, sendRequest); - startActivity(intent); - } - - /** - * Sends stats to Google Analytics. - */ - private void sendStats() { - if (sendRequest.isSendDrive()) { - AnalyticsUtils.sendPageViews(activity, "/send/drive"); - } - if (sendRequest.isSendMaps()) { - AnalyticsUtils.sendPageViews(activity, "/send/maps"); - } - if (sendRequest.isSendFusionTables()) { - AnalyticsUtils.sendPageViews(activity, "/send/fusion_tables"); - } - if (sendRequest.isSendSpreadsheets()) { - AnalyticsUtils.sendPageViews(activity, "/send/spreadsheets"); - } - } - /** * True to send to Google Drive. */