forked from upstream-mirrors/OpenTracks
Add option to share as a file.
This commit is contained in:
@@ -31,6 +31,7 @@ limitations under the License.
|
||||
<string name="chart_show_speed_key">chartShowSpeed</string>
|
||||
<string name="confirm_play_earth_key">confirmPlayEarth</string>
|
||||
<string name="confirm_share_drive_key">confirmShareDrive</string>
|
||||
<string name="confirm_share_file_key">confirmShareFile</string>
|
||||
<string name="confirm_share_maps_key">confirmShareMaps</string>
|
||||
<string name="default_activity_key">defaultActivity</string>
|
||||
<string name="default_map_public_key">defaultMapPublic</string>
|
||||
|
||||
@@ -2038,6 +2038,13 @@ limitations under the License.
|
||||
share via Google Drive.">
|
||||
Via Google Drive
|
||||
</string>
|
||||
<string name="settings_sharing_share_track_file"
|
||||
translation_description="In the 'Sharing' settings, the option in the 'Share track' setting to
|
||||
share as a file.
|
||||
|
||||
%1$s: file format. E.g., 'GPX'.">
|
||||
As %1$s file
|
||||
</string>
|
||||
<string name="settings_sharing_share_track_maps"
|
||||
translation_description="In the 'Sharing' settings, the option in the 'Share track' setting to
|
||||
share via Google Maps url.">
|
||||
@@ -2099,6 +2106,10 @@ limitations under the License.
|
||||
This will upload your track to Google Drive so you can share the file with friends. The file
|
||||
will be private and only those you have shared with will have access.
|
||||
</string>
|
||||
<string name="share_track_file_confirm_message"
|
||||
translation_description="The confirmation message when sharing a track as a file.">
|
||||
This will save your track to external storage so you can share the file.
|
||||
</string>
|
||||
<string name="share_track_maps_confirm_message"
|
||||
translation_description="The confirmation message when sharing a track via Google Maps with
|
||||
friends.
|
||||
|
||||
@@ -27,6 +27,8 @@ import com.google.android.apps.mytracks.fragments.ChooseActivityDialogFragment.C
|
||||
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.file.SaveActivity;
|
||||
import com.google.android.apps.mytracks.io.file.TrackFileFormat;
|
||||
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;
|
||||
@@ -52,6 +54,7 @@ import android.app.Activity;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.Parcelable;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.util.Log;
|
||||
import android.widget.Toast;
|
||||
@@ -338,36 +341,63 @@ public abstract class AbstractSendToGoogleActivity extends AbstractMyTracksActiv
|
||||
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)) {
|
||||
String driveValue = getString(R.string.settings_sharing_share_track_drive_value);
|
||||
String mapsValue = getString(R.string.settings_sharing_share_track_maps_value);
|
||||
if (shareTrack.equals(driveValue)) {
|
||||
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 {
|
||||
} else if (shareTrack.equals(mapsValue)) {
|
||||
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),
|
||||
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);
|
||||
}
|
||||
} else {
|
||||
ConfirmDialogFragment.newInstance(R.string.confirm_share_file_key,
|
||||
PreferencesUtils.CONFIRM_SHARE_FILE_DEFAULT,
|
||||
getString(R.string.share_track_file_confirm_message), trackId)
|
||||
.show(getSupportFragmentManager(), ConfirmDialogFragment.CONFIRM_DIALOG_TAG);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConfirmDone(int confirmId, long trackId) {
|
||||
SendRequest newRequest;
|
||||
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);
|
||||
newRequest = new SendRequest(trackId);
|
||||
newRequest.setSendDrive(true);
|
||||
newRequest.setDriveShare(true);
|
||||
sendToGoogle(newRequest);
|
||||
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;
|
||||
newRequest = new SendRequest(trackId);
|
||||
newRequest.setSendMaps(true);
|
||||
newRequest.setMapsShare(true);
|
||||
sendToGoogle(newRequest);
|
||||
break;
|
||||
case R.string.confirm_share_file_key:
|
||||
String shareTrack = PreferencesUtils.getString(
|
||||
this, R.string.share_track_key, PreferencesUtils.SHARE_TRACK_DEFAULT);
|
||||
TrackFileFormat trackFileFormat;
|
||||
if (shareTrack.equals(TrackFileFormat.GPX.name())) {
|
||||
trackFileFormat = TrackFileFormat.GPX;
|
||||
} else if (shareTrack.equals(TrackFileFormat.KML.name())) {
|
||||
trackFileFormat = TrackFileFormat.KML;
|
||||
} else if (shareTrack.equals(TrackFileFormat.CSV.name())) {
|
||||
trackFileFormat = TrackFileFormat.CSV;
|
||||
} else {
|
||||
trackFileFormat = TrackFileFormat.TCX;
|
||||
}
|
||||
Intent intent = IntentUtils.newIntent(this, SaveActivity.class)
|
||||
.putExtra(SaveActivity.EXTRA_TRACK_ID, trackId)
|
||||
.putExtra(SaveActivity.EXTRA_TRACK_FILE_FORMAT, (Parcelable) trackFileFormat)
|
||||
.putExtra(SaveActivity.EXTRA_SHARE_TRACK, true);
|
||||
startActivity(intent);
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,6 +44,7 @@ public class SaveActivity extends Activity {
|
||||
public static final String EXTRA_TRACK_FILE_FORMAT = "track_file_format";
|
||||
public static final String EXTRA_TRACK_ID = "track_id";
|
||||
public static final String EXTRA_PLAY_TRACK = "play_track";
|
||||
public static final String EXTRA_SHARE_TRACK = "share_track";
|
||||
|
||||
public static final String GOOGLE_EARTH_KML_MIME_TYPE = "application/vnd.google-earth.kml+xml";
|
||||
public static final String GOOGLE_EARTH_PACKAGE = "com.google.earth";
|
||||
@@ -59,6 +60,7 @@ public class SaveActivity extends Activity {
|
||||
private TrackFileFormat trackFileFormat;
|
||||
private long trackId;
|
||||
private boolean playTrack;
|
||||
private boolean shareTrack;
|
||||
private String directoryName;
|
||||
|
||||
private SaveAsyncTask saveAsyncTask;
|
||||
@@ -70,9 +72,6 @@ public class SaveActivity extends Activity {
|
||||
// the number of tracks to save
|
||||
private int totalCount;
|
||||
|
||||
// the last successfully saved path
|
||||
private String savedPath;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@@ -81,6 +80,7 @@ public class SaveActivity extends Activity {
|
||||
trackFileFormat = intent.getParcelableExtra(EXTRA_TRACK_FILE_FORMAT);
|
||||
trackId = intent.getLongExtra(EXTRA_TRACK_ID, -1L);
|
||||
playTrack = intent.getBooleanExtra(EXTRA_PLAY_TRACK, false);
|
||||
shareTrack = intent.getBooleanExtra(EXTRA_SHARE_TRACK, false);
|
||||
|
||||
if (!FileUtils.isExternalStorageWriteable()) {
|
||||
Toast.makeText(this, R.string.external_storage_not_writable, Toast.LENGTH_LONG).show();
|
||||
@@ -88,7 +88,7 @@ public class SaveActivity extends Activity {
|
||||
return;
|
||||
}
|
||||
|
||||
directoryName = playTrack ? FileUtils.buildExternalDirectoryPath(
|
||||
directoryName = playTrack || shareTrack ? FileUtils.buildExternalDirectoryPath(
|
||||
trackFileFormat.getExtension(), "tmp")
|
||||
: FileUtils.buildExternalDirectoryPath(trackFileFormat.getExtension());
|
||||
|
||||
@@ -141,7 +141,7 @@ public class SaveActivity extends Activity {
|
||||
success = false;
|
||||
message = getString(R.string.save_error, successCount, totalTracks, directoryName);
|
||||
}
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this).setCancelable(true).setIcon(
|
||||
return new AlertDialog.Builder(this).setCancelable(true).setIcon(
|
||||
success ? android.R.drawable.ic_dialog_info : android.R.drawable.ic_dialog_alert)
|
||||
.setMessage(message).setOnCancelListener(new DialogInterface.OnCancelListener() {
|
||||
@Override
|
||||
@@ -155,22 +155,8 @@ public class SaveActivity extends Activity {
|
||||
dialog.dismiss();
|
||||
finish();
|
||||
}
|
||||
}).setTitle(success ? R.string.generic_success_title : R.string.generic_error_title);
|
||||
|
||||
if (success && trackId != -1L && !playTrack && savedPath != null) {
|
||||
builder.setNegativeButton(
|
||||
R.string.share_track_share_file, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
Intent intent = IntentUtils.newShareFileIntent(
|
||||
SaveActivity.this, trackId, savedPath, trackFileFormat);
|
||||
startActivity(
|
||||
Intent.createChooser(intent, getString(R.string.share_track_picker_title)));
|
||||
finish();
|
||||
}
|
||||
});
|
||||
}
|
||||
return builder.create();
|
||||
}).setTitle(success ? R.string.generic_success_title : R.string.generic_error_title)
|
||||
.create();
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
@@ -181,24 +167,31 @@ public class SaveActivity extends Activity {
|
||||
*
|
||||
* @param aSuccessCount the number of tracks successfully saved
|
||||
* @param aTotalCount the number of tracks to save
|
||||
* @param aSavedPath the last successfully saved path
|
||||
* @param savedPath the last successfully saved path
|
||||
*/
|
||||
public void onAsyncTaskCompleted(int aSuccessCount, int aTotalCount, String aSavedPath) {
|
||||
public void onAsyncTaskCompleted(int aSuccessCount, int aTotalCount, String savedPath) {
|
||||
successCount = aSuccessCount;
|
||||
totalCount = aTotalCount;
|
||||
savedPath = aSavedPath;
|
||||
removeDialog(DIALOG_PROGRESS_ID);
|
||||
if (successCount == 1 && totalCount == 1 && playTrack && savedPath != null) {
|
||||
Intent intent = new Intent().addFlags(
|
||||
Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
.putExtra(GOOGLE_EARTH_TOUR_FEATURE_ID, KmlTrackWriter.TOUR_FEATURE_ID)
|
||||
.setClassName(GOOGLE_EARTH_PACKAGE, GOOGLE_EARTH_CLASS)
|
||||
.setDataAndType(Uri.fromFile(new File(savedPath)), GOOGLE_EARTH_KML_MIME_TYPE);
|
||||
startActivity(intent);
|
||||
finish();
|
||||
} else {
|
||||
showDialog(DIALOG_RESULT_ID);
|
||||
if (successCount == 1 && totalCount == 1 && savedPath != null) {
|
||||
if (playTrack) {
|
||||
Intent intent = new Intent().addFlags(
|
||||
Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
.putExtra(GOOGLE_EARTH_TOUR_FEATURE_ID, KmlTrackWriter.TOUR_FEATURE_ID)
|
||||
.setClassName(GOOGLE_EARTH_PACKAGE, GOOGLE_EARTH_CLASS)
|
||||
.setDataAndType(Uri.fromFile(new File(savedPath)), GOOGLE_EARTH_KML_MIME_TYPE);
|
||||
startActivity(intent);
|
||||
finish();
|
||||
return;
|
||||
} else if (shareTrack) {
|
||||
Intent intent = IntentUtils.newShareFileIntent(this, trackId, savedPath, trackFileFormat);
|
||||
startActivity(
|
||||
Intent.createChooser(intent, getString(R.string.share_track_picker_title)));
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
}
|
||||
showDialog(DIALOG_RESULT_ID);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+20
-4
@@ -28,6 +28,9 @@ import android.preference.ListPreference;
|
||||
import android.preference.Preference;
|
||||
import android.preference.Preference.OnPreferenceChangeListener;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* An activity for accessing the sharing settings.
|
||||
*
|
||||
@@ -45,14 +48,27 @@ 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);
|
||||
|
||||
String fileTypes[] = getResources().getStringArray(R.array.file_types);
|
||||
ArrayList<String> shareTrackValues = new ArrayList<String>(
|
||||
Arrays.asList(getResources().getStringArray(R.array.share_track_values)));
|
||||
for (String fileType : fileTypes) {
|
||||
shareTrackValues.add(fileType);
|
||||
}
|
||||
String[] values = shareTrackValues.toArray(new String[shareTrackValues.size()]);
|
||||
|
||||
ArrayList<String> shareTrackOptions = new ArrayList<String>(
|
||||
Arrays.asList(getResources().getStringArray(R.array.share_track_options)));
|
||||
for (String fileType : fileTypes) {
|
||||
shareTrackOptions.add(getString(R.string.settings_sharing_share_track_file, fileType));
|
||||
}
|
||||
String[] options = shareTrackOptions.toArray(new String[shareTrackOptions.size()]);
|
||||
|
||||
configureListPreference(shareTrackListPreference, options, options, values, value, null);
|
||||
|
||||
|
||||
allowAccessCheckBoxPreference = (CheckBoxPreference) findPreference(
|
||||
getString(R.string.allow_access_key));
|
||||
|
||||
@@ -52,6 +52,7 @@ public class PreferencesUtils {
|
||||
|
||||
public static final boolean CONFIRM_PLAY_EARTH_DEFAULT = true;
|
||||
public static final boolean CONFIRM_SHARE_DRIVE_DEFAULT = true;
|
||||
public static final boolean CONFIRM_SHARE_FILE_DEFAULT = true;
|
||||
public static final boolean CONFIRM_SHARE_MAPS_DEFAULT = true;
|
||||
|
||||
public static final String DEFAULT_ACTIVITY_DEFAULT = "";
|
||||
|
||||
Reference in New Issue
Block a user