mirror of
https://codeberg.org/OpenTracksApp/OpenTracks.git
synced 2026-10-02 09:33:06 +02:00
Modify the sharing flow to first show a list of applications.
Store preferred account as a sharing setting. Remove share url only option. Apply share url only if twitter is selected.
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:gravity="center_vertical"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:minHeight="?android:attr/listPreferredItemHeight"
|
||||
android:orientation="horizontal"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp" >
|
||||
<ImageView
|
||||
android:contentDescription="@string/icon_application"
|
||||
android:id="@+id/choose_activity_list_item_icon"
|
||||
android:layout_height="@android:dimen/app_icon_size"
|
||||
android:layout_width="@android:dimen/app_icon_size"
|
||||
android:scaleType="fitCenter" />
|
||||
<LinearLayout
|
||||
android:gravity="center_vertical"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:orientation="vertical" >
|
||||
<TextView
|
||||
android:id="@+id/choose_activity_list_item_text1"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:maxLines="2"
|
||||
android:paddingLeft="16dp"
|
||||
android:textAppearance="?android:attr/textAppearanceListItemSmall" />
|
||||
<TextView
|
||||
android:id="@+id/choose_activity_list_item_text2"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:maxLines="2"
|
||||
android:paddingLeft="16dp"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
@@ -21,7 +21,7 @@ limitations under the License.
|
||||
android:layout_width="fill_parent"
|
||||
android:padding="8dp"
|
||||
android:stretchColumns="1" >
|
||||
<TableRow android:id="@+id/send_google_maps_row" >
|
||||
<TableRow>
|
||||
<ImageView
|
||||
android:contentDescription="@string/send_google_maps"
|
||||
android:src="@drawable/google_maps_icon"
|
||||
@@ -47,7 +47,7 @@ limitations under the License.
|
||||
style="@style/TextMedium" />
|
||||
</RadioGroup>
|
||||
</TableRow>
|
||||
<TableRow android:id="@+id/send_google_fusion_tables_row" >
|
||||
<TableRow>
|
||||
<ImageView
|
||||
android:contentDescription="@string/send_google_fusion_tables"
|
||||
android:src="@drawable/google_fusion_tables_icon"
|
||||
@@ -57,7 +57,7 @@ limitations under the License.
|
||||
android:text="@string/send_google_fusion_tables"
|
||||
style="@style/UploadServiceChooserCheckBox" />
|
||||
</TableRow>
|
||||
<TableRow android:id="@+id/send_google_docs_row" >
|
||||
<TableRow>
|
||||
<ImageView
|
||||
android:contentDescription="@string/send_google_docs"
|
||||
android:src="@drawable/google_docs_icon"
|
||||
|
||||
@@ -39,18 +39,6 @@ limitations under the License.
|
||||
android:orderInCategory="4"
|
||||
android:showAsAction="ifRoom"
|
||||
android:title="@string/menu_share">
|
||||
<menu>
|
||||
<item
|
||||
android:id="@+id/track_detail_share_map_url"
|
||||
android:title="@string/menu_share_map_url"/>
|
||||
<item
|
||||
android:id="@+id/track_detail_share_fusion_table_url"
|
||||
android:title="@string/menu_share_fusion_table_url"/>
|
||||
<item android:id="@+id/track_detail_share_gpx"/>
|
||||
<item android:id="@+id/track_detail_share_kml"/>
|
||||
<item android:id="@+id/track_detail_share_csv"/>
|
||||
<item android:id="@+id/track_detail_share_tcx"/>
|
||||
</menu>
|
||||
</item>
|
||||
<item
|
||||
android:icon="@drawable/menu_markers"
|
||||
|
||||
@@ -39,7 +39,6 @@ limitations under the License.
|
||||
<string name="min_recording_interval_key">minRecordingInterval</string>
|
||||
<string name="min_required_accuracy_key">minRequiredAccuracy</string>
|
||||
<string name="pick_existing_map_key">pickExistingMap</string>
|
||||
<string name="preferred_account_key">preferredAccount</string>
|
||||
<string name="recording_track_id_key">recordingTrackId</string>
|
||||
<string name="report_speed_key">reportSpeed</string>
|
||||
<string name="selected_track_id_key">selectedTrackId</string>
|
||||
@@ -47,7 +46,7 @@ limitations under the License.
|
||||
<string name="send_to_fusion_tables_key">sendToFusionTables</string>
|
||||
<string name="send_to_maps_key">sendToMaps</string>
|
||||
<string name="sensor_type_key">sensorType</string>
|
||||
<string name="share_url_only_key">shareUrlOnly</string>
|
||||
<string name="sharing_account_key">sharingAccount</string>
|
||||
<string name="show_check_units_dialog_key">showCheckUnitsDialog</string>
|
||||
<string name="show_welcome_dialog_key">showWelcomeDialog</string>
|
||||
<string name="split_frequency_key">splitFrequency</string>
|
||||
|
||||
@@ -821,6 +821,12 @@ limitations under the License.
|
||||
</string>
|
||||
|
||||
<!-- Icon -->
|
||||
<string name="icon_application"
|
||||
translation_description="When sharing a track, we display a list of Android applications on the
|
||||
phone that can be used. In the list, we display an application icon for each application. This
|
||||
is the accessibility description for the icon.">
|
||||
Application
|
||||
</string>
|
||||
<string name="icon_marker"
|
||||
translation_description="The accessibility description for the 'Marker' icon.">
|
||||
Marker
|
||||
@@ -1096,24 +1102,6 @@ limitations under the License.
|
||||
translation_description="In the menu, to share a track.">
|
||||
Share
|
||||
</string>
|
||||
<string name="menu_share_file"
|
||||
translation_description="Under the 'Share' menu option, the option to share a track as a
|
||||
certain file format.
|
||||
|
||||
%1$s: file format. 'GPX', 'KML', 'CSV', or 'TCX'.">
|
||||
%1$s file
|
||||
</string>
|
||||
<string name="menu_share_fusion_table_url"
|
||||
translation_description="Under the 'Share' menu option, the option to save a track to Google
|
||||
Fusion Tables and share the Fusion Table URL with friends. 'Fusion Table URL' in this context
|
||||
means a Google Fusion Table URL.">
|
||||
Fusion Table URL
|
||||
</string>
|
||||
<string name="menu_share_map_url"
|
||||
translation_description="Under the 'Share' menu option, the option to save a track to Google
|
||||
Maps and share the Map URL with friends. 'Map URL' in this context means a Google Map URL.">
|
||||
Map URL
|
||||
</string>
|
||||
<string name="menu_show_on_map"
|
||||
translation_description="In the menu, to show a track or a marker on the map.">
|
||||
Show on map
|
||||
@@ -1342,11 +1330,6 @@ limitations under the License.
|
||||
%1$s: service name. 'Google Maps', 'Google Fusion Tables', or 'Google Docs'.">
|
||||
Sending to %1$s...
|
||||
</string>
|
||||
<string name="send_google_result_share_url"
|
||||
translation_description="When sending a track to Google, in the result dialog, the button on
|
||||
the bottom to share with friends the URL of the uploaded track.">
|
||||
Share track URL
|
||||
</string>
|
||||
<string name="send_google_send_now"
|
||||
translation_description="When sending a track to Google, under the 'Send to...' dialog, the
|
||||
button on the bottom to send the track to the selected Google services.">
|
||||
@@ -1861,6 +1844,14 @@ limitations under the License.
|
||||
Character limit: ~26 (1 line)">
|
||||
Sharing
|
||||
</string>
|
||||
<string name="settings_sharing_account"
|
||||
translation_description="In the 'Sharing' settings, the option to switch account.">
|
||||
Switch account
|
||||
</string>
|
||||
<string name="settings_sharing_account_summary"
|
||||
translation_description="In the 'Sharing' settings, the summary for 'Switch account'.">
|
||||
Switch account used when sending a track to Google.
|
||||
</string>
|
||||
<string name="settings_sharing_allow_access"
|
||||
translation_description="In the 'Sharing' settings, the checkbox option to allow third party
|
||||
apps access to the My Tracks data.
|
||||
@@ -1907,25 +1898,6 @@ limitations under the License.
|
||||
be public, as opposed to unlisted.">
|
||||
Make new maps created in Google Maps public.
|
||||
</string>
|
||||
<string name="settings_sharing_url_only"
|
||||
translation_description="In the 'Sharing' settings, the checkbox option to share only the URL,
|
||||
without any descriptive text, when sharing a URL with friends.
|
||||
|
||||
Character limit: ~23 (1 line)">
|
||||
Share only URL
|
||||
</string>
|
||||
<string name="settings_sharing_url_only_summary_off"
|
||||
translation_description="In the 'Sharing' settings, the summary for the 'Share only URL'
|
||||
checkbox option when it is unchecked explaining that it will include descriptive text when
|
||||
sharing a URL with friends.">
|
||||
Include descriptive text when sharing a URL with friends.
|
||||
</string>
|
||||
<string name="settings_sharing_url_only_summary_on"
|
||||
translation_description="In the 'Sharing' settings, the summary for the 'Share only URL'
|
||||
checkbox option when it is checked explaining that it will remove any descriptive text when
|
||||
sharing a URL with friends.">
|
||||
Remove any descriptive text when sharing a URL with friends.
|
||||
</string>
|
||||
|
||||
<!-- Settings Split -->
|
||||
<string name="settings_split_frequency_title"
|
||||
@@ -2003,8 +1975,13 @@ limitations under the License.
|
||||
</string>
|
||||
<string name="share_track_picker_title"
|
||||
translation_description="When sharing a track URL with friends, the title on the picker to ask
|
||||
the user which application he wants to use.">
|
||||
Share track using:
|
||||
the user to select an application.">
|
||||
Select an application
|
||||
</string>
|
||||
<string name="share_track_share_url"
|
||||
translation_description="After sending a track to Google, the button on the result dialog to
|
||||
share the uploaded track URL with friends.">
|
||||
Share track URL
|
||||
</string>
|
||||
<string name="share_track_subject"
|
||||
translation_description="When sharing a track with friends, the subject line.">
|
||||
|
||||
@@ -16,18 +16,17 @@ limitations under the License.
|
||||
-->
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:title="@string/settings_sharing" >
|
||||
<ListPreference
|
||||
android:defaultValue=""
|
||||
android:key="@string/sharing_account_key"
|
||||
android:summary="@string/settings_sharing_account_summary"
|
||||
android:title="@string/settings_sharing_account" />
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="true"
|
||||
android:key="@string/default_map_public_key"
|
||||
android:summaryOff="@string/settings_sharing_map_public_summary_off"
|
||||
android:summaryOn="@string/settings_sharing_map_public_summary_on"
|
||||
android:title="@string/settings_sharing_map_public" />
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="false"
|
||||
android:key="@string/share_url_only_key"
|
||||
android:summaryOff="@string/settings_sharing_url_only_summary_off"
|
||||
android:summaryOn="@string/settings_sharing_url_only_summary_on"
|
||||
android:title="@string/settings_sharing_url_only" />
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="false"
|
||||
android:key="@string/allow_access_key"
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.google.android.apps.mytracks.content.TrackDataHub;
|
||||
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.ChooseActivityDialogFragment;
|
||||
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;
|
||||
@@ -212,15 +213,6 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
|
||||
menu.findItem(R.id.track_detail_save_tcx)
|
||||
.setTitle(getString(R.string.menu_save_format, fileTypes[3]));
|
||||
|
||||
menu.findItem(R.id.track_detail_share_gpx)
|
||||
.setTitle(getString(R.string.menu_share_file, fileTypes[0]));
|
||||
menu.findItem(R.id.track_detail_share_kml)
|
||||
.setTitle(getString(R.string.menu_share_file, fileTypes[1]));
|
||||
menu.findItem(R.id.track_detail_share_csv)
|
||||
.setTitle(getString(R.string.menu_share_file, fileTypes[2]));
|
||||
menu.findItem(R.id.track_detail_share_tcx)
|
||||
.setTitle(getString(R.string.menu_share_file, fileTypes[3]));
|
||||
|
||||
stopRecordingMenuItem = menu.findItem(R.id.track_detail_stop_recording);
|
||||
insertMarkerMenuItem = menu.findItem(R.id.track_detail_insert_marker);
|
||||
playMenuItem = menu.findItem(R.id.track_detail_play);
|
||||
@@ -276,27 +268,9 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
|
||||
getSupportFragmentManager(), InstallEarthDialogFragment.INSTALL_EARTH_DIALOG_TAG);
|
||||
}
|
||||
return true;
|
||||
case R.id.track_detail_share_map_url:
|
||||
intent = IntentUtils.newIntent(this, UploadServiceChooserActivity.class)
|
||||
.putExtra(SendRequest.SEND_REQUEST_KEY, new SendRequest(trackId, true, false, false));
|
||||
startActivity(intent);
|
||||
return true;
|
||||
case R.id.track_detail_share_fusion_table_url:
|
||||
intent = IntentUtils.newIntent(this, UploadServiceChooserActivity.class)
|
||||
.putExtra(SendRequest.SEND_REQUEST_KEY, new SendRequest(trackId, false, true, false));
|
||||
startActivity(intent);
|
||||
return true;
|
||||
case R.id.track_detail_share_gpx:
|
||||
startSaveActivity(TrackFileFormat.GPX, true);
|
||||
return true;
|
||||
case R.id.track_detail_share_kml:
|
||||
startSaveActivity(TrackFileFormat.KML, true);
|
||||
return true;
|
||||
case R.id.track_detail_share_csv:
|
||||
startSaveActivity(TrackFileFormat.CSV, true);
|
||||
return true;
|
||||
case R.id.track_detail_share_tcx:
|
||||
startSaveActivity(TrackFileFormat.TCX, true);
|
||||
case R.id.track_detail_share:
|
||||
ChooseActivityDialogFragment.newInstance(trackId, null).show(
|
||||
getSupportFragmentManager(), ChooseActivityDialogFragment.CHOOSE_ACTIVITY_DIALOG_TAG);
|
||||
return true;
|
||||
case R.id.track_detail_markers:
|
||||
intent = IntentUtils.newIntent(this, MarkerListActivity.class)
|
||||
@@ -316,20 +290,20 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
|
||||
return true;
|
||||
case R.id.track_detail_send_google:
|
||||
intent = IntentUtils.newIntent(this, UploadServiceChooserActivity.class)
|
||||
.putExtra(SendRequest.SEND_REQUEST_KEY, new SendRequest(trackId, true, true, true));
|
||||
.putExtra(SendRequest.SEND_REQUEST_KEY, new SendRequest(trackId));
|
||||
startActivity(intent);
|
||||
return true;
|
||||
case R.id.track_detail_save_gpx:
|
||||
startSaveActivity(TrackFileFormat.GPX, false);
|
||||
startSaveActivity(TrackFileFormat.GPX);
|
||||
return true;
|
||||
case R.id.track_detail_save_kml:
|
||||
startSaveActivity(TrackFileFormat.KML, false);
|
||||
startSaveActivity(TrackFileFormat.KML);
|
||||
return true;
|
||||
case R.id.track_detail_save_csv:
|
||||
startSaveActivity(TrackFileFormat.CSV, false);
|
||||
startSaveActivity(TrackFileFormat.CSV);
|
||||
return true;
|
||||
case R.id.track_detail_save_tcx:
|
||||
startSaveActivity(TrackFileFormat.TCX, false);
|
||||
startSaveActivity(TrackFileFormat.TCX);
|
||||
return true;
|
||||
case R.id.track_detail_edit:
|
||||
intent = IntentUtils.newIntent(this, TrackEditActivity.class)
|
||||
@@ -480,13 +454,11 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
|
||||
* Starts the {@link SaveActivity} to save a track.
|
||||
*
|
||||
* @param trackFileFormat the track file format
|
||||
* @param shareTrack true to share the track after saving
|
||||
*/
|
||||
private void startSaveActivity(TrackFileFormat trackFileFormat, boolean shareTrack) {
|
||||
private void startSaveActivity(TrackFileFormat trackFileFormat) {
|
||||
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, shareTrack);
|
||||
.putExtra(SaveActivity.EXTRA_TRACK_FILE_FORMAT, (Parcelable) trackFileFormat);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
|
||||
@@ -132,11 +132,11 @@ public class ChartFragment extends Fragment implements TrackDataListener {
|
||||
return view;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
ViewGroup layout = (ViewGroup) getActivity().findViewById(R.id.chart_view_layout);
|
||||
@SuppressWarnings("deprecation")
|
||||
LayoutParams layoutParams = new LayoutParams(
|
||||
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
|
||||
layout.addView(chartView, layoutParams);
|
||||
|
||||
+259
@@ -0,0 +1,259 @@
|
||||
/*
|
||||
* 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.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.IntentUtils;
|
||||
import com.google.android.maps.mytracks.R;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Dialog;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ActivityInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v4.app.ShareCompat;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A DialogFragment to choose an activity.
|
||||
*
|
||||
* @author Jimmy Shih
|
||||
*/
|
||||
public class ChooseActivityDialogFragment extends DialogFragment {
|
||||
|
||||
public static final String CHOOSE_ACTIVITY_DIALOG_TAG = "chooseActivityDialog";
|
||||
|
||||
private static final String KEY_TRACK_ID = "trackId";
|
||||
private static final String KEY_TRACK_URL = "trackUrl";
|
||||
|
||||
private PackageManager packageManager;
|
||||
|
||||
public static ChooseActivityDialogFragment newInstance(long trackId, String trackUrl) {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putLong(KEY_TRACK_ID, trackId);
|
||||
bundle.putString(KEY_TRACK_URL, trackUrl);
|
||||
|
||||
ChooseActivityDialogFragment chooseActivityDialogFragment = new ChooseActivityDialogFragment();
|
||||
chooseActivityDialogFragment.setArguments(bundle);
|
||||
return chooseActivityDialogFragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
packageManager = getActivity().getPackageManager();
|
||||
List<DisplayInfo> displayInfos = getDisplayInfos();
|
||||
|
||||
ArrayAdapter<DisplayInfo> arrayAdapter = new ArrayAdapter<DisplayInfo>(getActivity(),
|
||||
R.layout.choose_activity_list_item, R.id.choose_activity_list_item_text1, displayInfos) {
|
||||
@Override
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
View view;
|
||||
if (convertView == null) {
|
||||
view = getActivity()
|
||||
.getLayoutInflater().inflate(R.layout.choose_activity_list_item, parent, false);
|
||||
} else {
|
||||
view = convertView;
|
||||
}
|
||||
DisplayInfo displayInfo = getItem(position);
|
||||
TextView text1 = (TextView) view.findViewById(R.id.choose_activity_list_item_text1);
|
||||
TextView text2 = (TextView) view.findViewById(R.id.choose_activity_list_item_text2);
|
||||
ImageView icon = (ImageView) view.findViewById(R.id.choose_activity_list_item_icon);
|
||||
text1.setText(displayInfo.primaryLabel);
|
||||
if (displayInfo.secondaryLabel != null) {
|
||||
text2.setVisibility(View.VISIBLE);
|
||||
text2.setText(displayInfo.secondaryLabel);
|
||||
} else {
|
||||
text2.setVisibility(View.GONE);
|
||||
}
|
||||
icon.setImageDrawable(displayInfo.icon);
|
||||
return view;
|
||||
}
|
||||
};
|
||||
return new AlertDialog.Builder(getActivity())
|
||||
.setSingleChoiceItems(arrayAdapter, 0, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
AlertDialog alertDialog = (AlertDialog) dialog;
|
||||
DisplayInfo displayInfo = (DisplayInfo) alertDialog.getListView()
|
||||
.getItemAtPosition(which);
|
||||
ActivityInfo activityInfo = displayInfo.resolveInfo.activityInfo;
|
||||
String packageName = activityInfo.applicationInfo.packageName;
|
||||
String className = activityInfo.name;
|
||||
|
||||
String trackUrl = getArguments().getString(KEY_TRACK_URL);
|
||||
if (trackUrl == null) {
|
||||
SendRequest sendRequest = new SendRequest(getArguments().getLong(KEY_TRACK_ID));
|
||||
sendRequest.setSendMaps(true);
|
||||
sendRequest.setNewMap(true);
|
||||
sendRequest.setSharingAppPackageName(packageName);
|
||||
sendRequest.setSharingAppClassName(className);
|
||||
Intent intent = IntentUtils.newIntent(getActivity(), AccountChooserActivity.class)
|
||||
.putExtra(SendRequest.SEND_REQUEST_KEY, sendRequest);
|
||||
startActivity(intent);
|
||||
dismiss();
|
||||
} else {
|
||||
Intent intent = IntentUtils.newShareUrlIntent(
|
||||
getActivity(), trackUrl, packageName, className);
|
||||
startActivity(intent);
|
||||
getActivity().finish();
|
||||
}
|
||||
}
|
||||
})
|
||||
.setTitle(R.string.share_track_picker_title)
|
||||
.create();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the display info.
|
||||
*/
|
||||
private List<DisplayInfo> getDisplayInfos() {
|
||||
List<DisplayInfo> displayInfos = new ArrayList<DisplayInfo>();
|
||||
Intent intent = ShareCompat.IntentBuilder.from(getActivity())
|
||||
.setType(IntentUtils.TEXT_PLAIN_TYPE).getIntent();
|
||||
List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(
|
||||
intent, PackageManager.MATCH_DEFAULT_ONLY);
|
||||
if (resolveInfos != null && resolveInfos.size() > 0) {
|
||||
int size = resolveInfos.size();
|
||||
ResolveInfo firstResolveInfo = resolveInfos.get(0);
|
||||
for (int i = 1; i < size; i++) {
|
||||
ResolveInfo resolveInfo = resolveInfos.get(i);
|
||||
if (firstResolveInfo.priority != resolveInfo.priority
|
||||
|| firstResolveInfo.isDefault != resolveInfo.isDefault) {
|
||||
while (i < size) {
|
||||
resolveInfos.remove(i);
|
||||
size--;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (size > 1) {
|
||||
ResolveInfo.DisplayNameComparator displayNameComparator = new ResolveInfo.DisplayNameComparator(
|
||||
packageManager);
|
||||
Collections.sort(resolveInfos, displayNameComparator);
|
||||
}
|
||||
|
||||
firstResolveInfo = resolveInfos.get(0);
|
||||
int start = 0;
|
||||
CharSequence firstLabel = firstResolveInfo.loadLabel(packageManager);
|
||||
for (int i = 1; i < size; i++) {
|
||||
if (firstLabel == null) {
|
||||
firstLabel = firstResolveInfo.activityInfo.packageName;
|
||||
}
|
||||
ResolveInfo resolveInfo = resolveInfos.get(i);
|
||||
CharSequence label = resolveInfo.loadLabel(packageManager);
|
||||
if (label == null) {
|
||||
label = resolveInfo.activityInfo.packageName;
|
||||
}
|
||||
if (label.equals(firstLabel)) {
|
||||
continue;
|
||||
}
|
||||
processGroup(resolveInfos, displayInfos, start, i - 1);
|
||||
firstResolveInfo = resolveInfo;
|
||||
firstLabel = label;
|
||||
start = i;
|
||||
}
|
||||
// Process last group
|
||||
processGroup(resolveInfos, displayInfos, start, size - 1);
|
||||
}
|
||||
return displayInfos;
|
||||
}
|
||||
|
||||
/**
|
||||
* Contains display info.
|
||||
*
|
||||
* @author Jimmy Shih
|
||||
*/
|
||||
private final class DisplayInfo {
|
||||
private ResolveInfo resolveInfo;
|
||||
private CharSequence primaryLabel;
|
||||
private CharSequence secondaryLabel;
|
||||
private Drawable icon;
|
||||
|
||||
public DisplayInfo(ResolveInfo resolveInfo, CharSequence primaryLabel,
|
||||
CharSequence secondaryLabel, Drawable icon) {
|
||||
this.resolveInfo = resolveInfo;
|
||||
this.primaryLabel = primaryLabel;
|
||||
this.secondaryLabel = secondaryLabel;
|
||||
this.icon = icon;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Processes a group of items with the same label.
|
||||
*
|
||||
* @param resolveInfos list of resolve infos
|
||||
* @param displayInfos list of display infos
|
||||
* @param start start index
|
||||
* @param end end index
|
||||
*/
|
||||
private void processGroup(
|
||||
List<ResolveInfo> resolveInfos, List<DisplayInfo> displayInfos, int start, int end) {
|
||||
ResolveInfo startResolveInfo = resolveInfos.get(start);
|
||||
CharSequence primaryLabel = startResolveInfo.loadLabel(packageManager);
|
||||
Drawable icon = startResolveInfo.loadIcon(packageManager);
|
||||
|
||||
int num = end - start + 1;
|
||||
if (num == 1) {
|
||||
// Only one, set the secondary label to null
|
||||
displayInfos.add(new DisplayInfo(startResolveInfo, primaryLabel, null, icon));
|
||||
} else {
|
||||
// Decide package name or application name for the secondary label
|
||||
boolean usePackageName = false;
|
||||
CharSequence appName = startResolveInfo.activityInfo.applicationInfo.loadLabel(
|
||||
packageManager);
|
||||
if (appName == null) {
|
||||
usePackageName = true;
|
||||
} else {
|
||||
// Use HashSet to track duplicates
|
||||
HashSet<CharSequence> duplicates = new HashSet<CharSequence>();
|
||||
duplicates.add(appName);
|
||||
for (int i = start + 1; i <= end; i++) {
|
||||
ResolveInfo resolveInfo = resolveInfos.get(i);
|
||||
CharSequence name = resolveInfo.activityInfo.applicationInfo.loadLabel(packageManager);
|
||||
if ((name == null) || (duplicates.contains(name))) {
|
||||
usePackageName = true;
|
||||
break;
|
||||
} else {
|
||||
duplicates.add(name);
|
||||
}
|
||||
}
|
||||
// Clear HashSet for later use
|
||||
duplicates.clear();
|
||||
}
|
||||
for (int i = start; i <= end; i++) {
|
||||
ResolveInfo resolveInfo = resolveInfos.get(i);
|
||||
CharSequence secondaryLabel = usePackageName ? resolveInfo.activityInfo.packageName
|
||||
: resolveInfo.activityInfo.applicationInfo.loadLabel(packageManager);
|
||||
displayInfos.add(new DisplayInfo(resolveInfo, primaryLabel, secondaryLabel, icon));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -80,9 +80,6 @@ public abstract class AbstractSendAsyncTask extends AsyncTask<Void, Integer, Boo
|
||||
return performTask();
|
||||
} finally {
|
||||
closeConnection();
|
||||
if (success) {
|
||||
saveResult();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,6 +94,9 @@ public abstract class AbstractSendAsyncTask extends AsyncTask<Void, Integer, Boo
|
||||
protected void onPostExecute(Boolean result) {
|
||||
success = result;
|
||||
completed = true;
|
||||
if (success) {
|
||||
saveResult();
|
||||
}
|
||||
if (activity != null) {
|
||||
activity.onAsyncTaskCompleted(success);
|
||||
}
|
||||
|
||||
+11
-18
@@ -76,7 +76,6 @@ public class AccountChooserActivity extends Activity {
|
||||
|
||||
private SendRequest sendRequest;
|
||||
private Account[] accounts;
|
||||
private int selectedAccountIndex;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
@@ -91,19 +90,18 @@ public class AccountChooserActivity extends Activity {
|
||||
|
||||
if (accounts.length == 1) {
|
||||
sendRequest.setAccount(accounts[0]);
|
||||
PreferencesUtils.setString(this, R.string.preferred_account_key, accounts[0].name);
|
||||
PreferencesUtils.setString(this, R.string.sharing_account_key, accounts[0].name);
|
||||
getPermission(MapsConstants.SERVICE_NAME, sendRequest.isSendMaps(), mapsCallback);
|
||||
return;
|
||||
}
|
||||
|
||||
String preferredAccount = PreferencesUtils.getString(this, R.string.preferred_account_key,
|
||||
PreferencesUtils.PREFERRED_ACCOUNT_DEFAULT);
|
||||
|
||||
selectedAccountIndex = 0;
|
||||
String sharingAccount = PreferencesUtils.getString(this, R.string.sharing_account_key,
|
||||
PreferencesUtils.SHARING_ACCOUNT_DEFAULT);
|
||||
for (int i = 0; i < accounts.length; i++) {
|
||||
if (accounts[i].name.equals(preferredAccount)) {
|
||||
selectedAccountIndex = i;
|
||||
break;
|
||||
if (accounts[i].name.equals(sharingAccount)) {
|
||||
sendRequest.setAccount(accounts[i]);
|
||||
getPermission(MapsConstants.SERVICE_NAME, sendRequest.isSendMaps(), mapsCallback);
|
||||
return;
|
||||
}
|
||||
}
|
||||
showDialog(DIALOG_CHOOSER_ID);
|
||||
@@ -159,20 +157,15 @@ public class AccountChooserActivity extends Activity {
|
||||
})
|
||||
.setPositiveButton(R.string.generic_ok, new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
Account account = accounts[selectedAccountIndex];
|
||||
int position = ((AlertDialog) dialog).getListView().getCheckedItemPosition();
|
||||
Account account = accounts[position];
|
||||
PreferencesUtils.setString(
|
||||
AccountChooserActivity.this, R.string.preferred_account_key, account.name);
|
||||
AccountChooserActivity.this, R.string.sharing_account_key, account.name);
|
||||
sendRequest.setAccount(account);
|
||||
getPermission(MapsConstants.SERVICE_NAME, sendRequest.isSendMaps(), mapsCallback);
|
||||
}
|
||||
})
|
||||
.setSingleChoiceItems(
|
||||
choices, selectedAccountIndex, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
selectedAccountIndex = which;
|
||||
}
|
||||
})
|
||||
.setSingleChoiceItems(choices, 0, null)
|
||||
.setTitle(R.string.send_google_choose_account_title)
|
||||
.create();
|
||||
}
|
||||
|
||||
@@ -31,9 +31,8 @@ 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 String sharingAppPackageName = null;
|
||||
private String sharingAppClassName = null;
|
||||
private boolean sendMaps = false;
|
||||
private boolean sendFusionTables = false;
|
||||
private boolean sendDocs = false;
|
||||
@@ -48,15 +47,9 @@ public class SendRequest implements Parcelable {
|
||||
* 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) {
|
||||
public SendRequest(long trackId) {
|
||||
this.trackId = trackId;
|
||||
this.showMaps = showMaps;
|
||||
this.showFusionTables = showFusionTables;
|
||||
this.showDocs = showDocs;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -67,31 +60,35 @@ public class SendRequest implements Parcelable {
|
||||
}
|
||||
|
||||
/**
|
||||
* True if showing the send to Google Maps option.
|
||||
* Gets the sharing app package name.
|
||||
*/
|
||||
public boolean isShowMaps() {
|
||||
return showMaps;
|
||||
public String getSharingAppPackageName() {
|
||||
return sharingAppPackageName;
|
||||
}
|
||||
|
||||
/**
|
||||
* True if showing the send to Google Fusion Tables option.
|
||||
* Sets the sharing app package name.
|
||||
*
|
||||
* @param sharingAppPackageName the sharing app package name
|
||||
*/
|
||||
public boolean isShowFusionTables() {
|
||||
return showFusionTables;
|
||||
public void setSharingAppPackageName(String sharingAppPackageName) {
|
||||
this.sharingAppPackageName = sharingAppPackageName;
|
||||
}
|
||||
|
||||
/**
|
||||
* True if showing the send to Google Docs option.
|
||||
* Gets the sharing app class name.
|
||||
*/
|
||||
public boolean isShowDocs() {
|
||||
return showDocs;
|
||||
public String getSharingAppClassName() {
|
||||
return sharingAppClassName;
|
||||
}
|
||||
|
||||
/**
|
||||
* True if showing all the send options.
|
||||
* Sets the sharing app class name.
|
||||
*
|
||||
* @param sharingAppClassName the sharing app class name
|
||||
*/
|
||||
public boolean isShowAll() {
|
||||
return showMaps && showFusionTables && showDocs;
|
||||
public void setSharingAppClassName(String sharingAppClassName) {
|
||||
this.sharingAppClassName = sharingAppClassName;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -245,9 +242,8 @@ public class SendRequest implements Parcelable {
|
||||
|
||||
private SendRequest(Parcel in) {
|
||||
trackId = in.readLong();
|
||||
showMaps = in.readByte() == 1;
|
||||
showFusionTables = in.readByte() == 1;
|
||||
showDocs = in.readByte() == 1;
|
||||
sharingAppPackageName = in.readString();
|
||||
sharingAppClassName = in.readString();
|
||||
sendMaps = in.readByte() == 1;
|
||||
sendFusionTables = in.readByte() == 1;
|
||||
sendDocs = in.readByte() == 1;
|
||||
@@ -267,9 +263,8 @@ public class SendRequest implements Parcelable {
|
||||
@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.writeString(sharingAppPackageName);
|
||||
out.writeString(sharingAppClassName);
|
||||
out.writeByte((byte) (sendMaps ? 1 : 0));
|
||||
out.writeByte((byte) (sendFusionTables ? 1 : 0));
|
||||
out.writeByte((byte) (sendDocs ? 1 : 0));
|
||||
|
||||
+25
-41
@@ -17,18 +17,19 @@ package com.google.android.apps.mytracks.io.sendtogoogle;
|
||||
|
||||
import com.google.android.apps.mytracks.content.MyTracksProviderUtils;
|
||||
import com.google.android.apps.mytracks.content.Track;
|
||||
import com.google.android.apps.mytracks.fragments.ChooseActivityDialogFragment;
|
||||
import com.google.android.apps.mytracks.io.fusiontables.SendFusionTablesUtils;
|
||||
import com.google.android.apps.mytracks.io.maps.SendMapsUtils;
|
||||
import com.google.android.apps.mytracks.util.PreferencesUtils;
|
||||
import com.google.android.apps.mytracks.util.IntentUtils;
|
||||
import com.google.android.maps.mytracks.R;
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
|
||||
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.FragmentActivity;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
@@ -36,33 +37,40 @@ import android.widget.TextView;
|
||||
|
||||
/**
|
||||
* A dialog to show the result of uploading to Google services.
|
||||
*
|
||||
*
|
||||
* @author Jimmy Shih
|
||||
*/
|
||||
public class UploadResultActivity extends Activity {
|
||||
public class UploadResultActivity extends FragmentActivity {
|
||||
|
||||
private static final String TEXT_PLAIN_TYPE = "text/plain";
|
||||
private static final int DIALOG_RESULT_ID = 0;
|
||||
|
||||
private SendRequest sendRequest;
|
||||
private Track track;
|
||||
private String shareUrl;
|
||||
private Dialog resultDialog;
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
sendRequest = getIntent().getParcelableExtra(SendRequest.SEND_REQUEST_KEY);
|
||||
track = null;
|
||||
shareUrl = null;
|
||||
|
||||
|
||||
if (sendRequest.isSendMaps() && sendRequest.isMapsSuccess()) {
|
||||
shareUrl = SendMapsUtils.getMapUrl(getTrack());
|
||||
if (sendRequest.getSharingAppPackageName() != null) {
|
||||
Intent intent = IntentUtils.newShareUrlIntent(this, shareUrl,
|
||||
sendRequest.getSharingAppPackageName(), sendRequest.getSharingAppClassName());
|
||||
startActivity(intent);
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (shareUrl == null && sendRequest.isSendFusionTables()
|
||||
&& sendRequest.isFusionTablesSuccess()) {
|
||||
shareUrl = SendFusionTablesUtils.getMapUrl(getTrack());
|
||||
}
|
||||
showDialog(DIALOG_RESULT_ID);
|
||||
}
|
||||
|
||||
private Track getTrack() {
|
||||
@@ -72,17 +80,11 @@ public class UploadResultActivity extends Activity {
|
||||
return track;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
showDialog(DIALOG_RESULT_ID);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Dialog onCreateDialog(int id) {
|
||||
if (id != DIALOG_RESULT_ID) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
View view = getLayoutInflater().inflate(R.layout.upload_result, null);
|
||||
|
||||
LinearLayout mapsResult = (LinearLayout) view.findViewById(R.id.upload_result_maps_result);
|
||||
@@ -139,31 +141,29 @@ public class UploadResultActivity extends Activity {
|
||||
.setCancelable(true)
|
||||
.setIcon(hasError ? android.R.drawable.ic_dialog_alert : android.R.drawable.ic_dialog_info)
|
||||
.setOnCancelListener(new DialogInterface.OnCancelListener() {
|
||||
@Override
|
||||
@Override
|
||||
public void onCancel(DialogInterface dialog) {
|
||||
finish();
|
||||
}
|
||||
})
|
||||
.setPositiveButton(R.string.generic_ok, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
if (!sendRequest.isShowAll() && shareUrl != null) {
|
||||
startShareUrlActivity(shareUrl);
|
||||
}
|
||||
finish();
|
||||
}
|
||||
})
|
||||
.setTitle(hasError ? R.string.generic_error_title : R.string.generic_success_title)
|
||||
.setView(view);
|
||||
|
||||
// Add a Share URL button if showing all the options and a shareUrl exists
|
||||
if (sendRequest.isShowAll() && shareUrl != null) {
|
||||
// Add a Share URL button if shareUrl exists
|
||||
if (shareUrl != null) {
|
||||
builder.setNegativeButton(
|
||||
R.string.send_google_result_share_url, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
R.string.share_track_share_url, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
startShareUrlActivity(shareUrl);
|
||||
finish();
|
||||
ChooseActivityDialogFragment.newInstance(sendRequest.getTrackId(), shareUrl).show(
|
||||
getSupportFragmentManager(),
|
||||
ChooseActivityDialogFragment.CHOOSE_ACTIVITY_DIALOG_TAG);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -171,22 +171,6 @@ public class UploadResultActivity extends Activity {
|
||||
return resultDialog;
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts an activity to share the url.
|
||||
*
|
||||
* @param url the url
|
||||
*/
|
||||
private void startShareUrlActivity(String url) {
|
||||
boolean shareUrlOnly = PreferencesUtils.getBoolean(
|
||||
this, R.string.share_url_only_key, PreferencesUtils.SHARE_URL_ONLY_DEFAULT);
|
||||
Intent intent = new Intent(Intent.ACTION_SEND)
|
||||
.setType(TEXT_PLAIN_TYPE)
|
||||
.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.share_track_subject))
|
||||
.putExtra(Intent.EXTRA_TEXT,
|
||||
shareUrlOnly ? url : getString(R.string.share_track_url_body_format, url));
|
||||
startActivity(Intent.createChooser(intent, getString(R.string.share_track_picker_title)));
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
Dialog getDialog() {
|
||||
return resultDialog;
|
||||
|
||||
+6
-37
@@ -49,10 +49,6 @@ public class UploadServiceChooserActivity extends Activity {
|
||||
private SendRequest sendRequest;
|
||||
private AlertDialog alertDialog;
|
||||
|
||||
private TableRow mapsTableRow;
|
||||
private TableRow fusionTablesTableRow;
|
||||
private TableRow docsTableRow;
|
||||
|
||||
private CheckBox mapsCheckBox;
|
||||
private CheckBox fusionTablesCheckBox;
|
||||
private CheckBox docsCheckBox;
|
||||
@@ -80,10 +76,6 @@ public class UploadServiceChooserActivity extends Activity {
|
||||
}
|
||||
View view = getLayoutInflater().inflate(R.layout.upload_service_chooser, null);
|
||||
|
||||
mapsTableRow = (TableRow) view.findViewById(R.id.send_google_maps_row);
|
||||
fusionTablesTableRow = (TableRow) view.findViewById(R.id.send_google_fusion_tables_row);
|
||||
docsTableRow = (TableRow) view.findViewById(R.id.send_google_docs_row);
|
||||
|
||||
mapsCheckBox = (CheckBox) view.findViewById(R.id.send_google_maps);
|
||||
fusionTablesCheckBox = (CheckBox) view.findViewById(R.id.send_google_fusion_tables);
|
||||
docsCheckBox = (CheckBox) view.findViewById(R.id.send_google_docs);
|
||||
@@ -105,9 +97,6 @@ public class UploadServiceChooserActivity extends Activity {
|
||||
// Setup initial state
|
||||
initState();
|
||||
|
||||
// Update state based on sendRequest
|
||||
updateStateBySendRequest();
|
||||
|
||||
// Update state based on current selection
|
||||
updateStateBySelection();
|
||||
|
||||
@@ -163,24 +152,6 @@ public class UploadServiceChooserActivity extends Activity {
|
||||
this, R.string.send_to_docs_key, PreferencesUtils.SEND_TO_DOCS_DEFAULT));
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the UI state based on sendRequest.
|
||||
*/
|
||||
private void updateStateBySendRequest() {
|
||||
if (!sendRequest.isShowAll()) {
|
||||
if (sendRequest.isShowMaps()) {
|
||||
mapsCheckBox.setChecked(true);
|
||||
} else if (sendRequest.isShowFusionTables()) {
|
||||
fusionTablesCheckBox.setChecked(true);
|
||||
} else if (sendRequest.isShowDocs()) {
|
||||
docsCheckBox.setChecked(true);
|
||||
}
|
||||
}
|
||||
mapsTableRow.setVisibility(sendRequest.isShowMaps() ? View.VISIBLE : View.GONE);
|
||||
fusionTablesTableRow.setVisibility(sendRequest.isShowFusionTables() ? View.VISIBLE : View.GONE);
|
||||
docsTableRow.setVisibility(sendRequest.isShowDocs() ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the UI state based on the current selection.
|
||||
*/
|
||||
@@ -195,32 +166,30 @@ public class UploadServiceChooserActivity extends Activity {
|
||||
void saveState() {
|
||||
PreferencesUtils.setBoolean(
|
||||
this, R.string.pick_existing_map_key, existingMapRadioButton.isChecked());
|
||||
if (sendRequest.isShowAll()) {
|
||||
PreferencesUtils.setBoolean(this, R.string.send_to_maps_key, sendMaps());
|
||||
PreferencesUtils.setBoolean(this, R.string.send_to_fusion_tables_key, sendFusionTables());
|
||||
PreferencesUtils.setBoolean(this, R.string.send_to_docs_key, sendDocs());
|
||||
}
|
||||
PreferencesUtils.setBoolean(this, R.string.send_to_maps_key, sendMaps());
|
||||
PreferencesUtils.setBoolean(this, R.string.send_to_fusion_tables_key, sendFusionTables());
|
||||
PreferencesUtils.setBoolean(this, R.string.send_to_docs_key, sendDocs());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true to send to Google Maps.
|
||||
*/
|
||||
private boolean sendMaps() {
|
||||
return sendRequest.isShowMaps() && mapsCheckBox.isChecked();
|
||||
return mapsCheckBox.isChecked();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true to send to Google Fusion Tables.
|
||||
*/
|
||||
private boolean sendFusionTables() {
|
||||
return sendRequest.isShowFusionTables() && fusionTablesCheckBox.isChecked();
|
||||
return fusionTablesCheckBox.isChecked();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true to send to Google Docs.
|
||||
*/
|
||||
private boolean sendDocs() {
|
||||
return sendRequest.isShowDocs() && docsCheckBox.isChecked();
|
||||
return docsCheckBox.isChecked();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+2
-2
@@ -36,13 +36,13 @@ public class AbstractSettingsActivity extends PreferenceActivity {
|
||||
|
||||
private BackupPreferencesListener backupPreferencesListener;
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
protected void onCreate(Bundle bundle) {
|
||||
super.onCreate(bundle);
|
||||
setVolumeControlStream(TextToSpeech.Engine.DEFAULT_STREAM);
|
||||
ApiAdapterFactory.getApiAdapter().configureActionBarHomeAsUp(this);
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
PreferenceManager preferenceManager = getPreferenceManager();
|
||||
preferenceManager.setSharedPreferencesName(Constants.SETTINGS_NAME);
|
||||
preferenceManager.setSharedPreferencesMode(Context.MODE_PRIVATE);
|
||||
@@ -63,10 +63,10 @@ public class AbstractSettingsActivity extends PreferenceActivity {
|
||||
return true;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
@SuppressWarnings("deprecation")
|
||||
PreferenceManager preferenceManager = getPreferenceManager();
|
||||
preferenceManager.getSharedPreferences()
|
||||
.unregisterOnSharedPreferenceChangeListener(backupPreferencesListener);
|
||||
|
||||
@@ -120,8 +120,8 @@ public class SensorSettingsActivity extends AbstractSettingsActivity {
|
||||
/**
|
||||
* Updates the bluetooth sensor list preference.
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
private void updateBluetoothSensorListPreference() {
|
||||
@SuppressWarnings("deprecation")
|
||||
ListPreference bluetoothSensorListPreference = (ListPreference) findPreference(
|
||||
getString(R.string.bluetooth_sensor_key));
|
||||
List<String> entries = new ArrayList<String>();
|
||||
|
||||
@@ -16,16 +16,23 @@
|
||||
|
||||
package com.google.android.apps.mytracks.settings;
|
||||
|
||||
import com.google.android.apps.mytracks.Constants;
|
||||
import com.google.android.apps.mytracks.util.DialogUtils;
|
||||
import com.google.android.maps.mytracks.R;
|
||||
|
||||
import android.accounts.Account;
|
||||
import android.accounts.AccountManager;
|
||||
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;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* An activity for accessing the sharing settings.
|
||||
*
|
||||
@@ -56,6 +63,21 @@ public class SharingSettingsActivity extends AbstractSettingsActivity {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
ListPreference sharingAccountListPreference = (ListPreference) findPreference(
|
||||
getString(R.string.sharing_account_key));
|
||||
List<String> entries = new ArrayList<String>();
|
||||
Account[] accounts = AccountManager.get(this).getAccountsByType(Constants.ACCOUNT_TYPE);
|
||||
for (Account account : accounts) {
|
||||
entries.add(account.name);
|
||||
}
|
||||
|
||||
sharingAccountListPreference.setEntries(entries.toArray(new CharSequence[entries.size()]));
|
||||
sharingAccountListPreference.setEntryValues(entries.toArray(
|
||||
new CharSequence[entries.size()]));
|
||||
if (entries.size() == 1) {
|
||||
sharingAccountListPreference.setValueIndex(0);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
|
||||
package com.google.android.apps.mytracks.util;
|
||||
|
||||
import com.google.android.maps.mytracks.R;
|
||||
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
||||
@@ -26,6 +29,9 @@ import android.content.Intent;
|
||||
*/
|
||||
public class IntentUtils {
|
||||
|
||||
public static final String TEXT_PLAIN_TYPE = "text/plain";
|
||||
private static final String TWITTER_PACKAGE_NAME = "com.twitter.android";
|
||||
|
||||
private IntentUtils() {}
|
||||
|
||||
/**
|
||||
@@ -39,4 +45,23 @@ public class IntentUtils {
|
||||
return new Intent(context, cls).addFlags(
|
||||
Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an intent to share a url with a sharing app.
|
||||
*
|
||||
* @param context the context
|
||||
* @param url the url
|
||||
* @param packageName the sharing app package name
|
||||
* @param className the sharing app class name
|
||||
*/
|
||||
public static final Intent newShareUrlIntent(
|
||||
Context context, String url, String packageName, String className) {
|
||||
return new Intent(Intent.ACTION_SEND)
|
||||
.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT | Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP)
|
||||
.putExtra(Intent.EXTRA_SUBJECT, context.getString(R.string.share_track_subject))
|
||||
.putExtra(Intent.EXTRA_TEXT, TWITTER_PACKAGE_NAME.equals(packageName)
|
||||
? url : context.getString(R.string.share_track_url_body_format, url))
|
||||
.setComponent(new ComponentName(packageName, className))
|
||||
.setType(TEXT_PLAIN_TYPE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,14 +66,13 @@ public class PreferencesUtils {
|
||||
public static final int MIN_REQUIRED_ACCURACY_POOR = 5000;
|
||||
|
||||
public static final boolean PICK_EXISTING_MAP_DEFAULT = false;
|
||||
public static final String PREFERRED_ACCOUNT_DEFAULT = "";
|
||||
public static final long RECORDING_TRACK_ID_DEFAULT = -1L;
|
||||
public static final boolean REPORT_SPEED_DEFAULT = true;
|
||||
public static final long SELECTED_TRACK_ID_DEFAULT = -1L;
|
||||
public static final boolean SEND_TO_DOCS_DEFAULT = true;
|
||||
public static final boolean SEND_TO_FUSION_TABLES_DEFAULT = true;
|
||||
public static final boolean SEND_TO_MAPS_DEFAULT = true;
|
||||
public static final boolean SHARE_URL_ONLY_DEFAULT = false;
|
||||
public static final String SHARING_ACCOUNT_DEFAULT = "";
|
||||
public static final boolean SHOW_CHECK_UNITS_DIALOG_DEFAULT = true;
|
||||
public static final boolean SHOW_WELCOME_DIALOG_DEFAULT = true;
|
||||
public static final int SPLIT_FREQUENCY_DEFAULT = 0;
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ public class SendFusionTablesActivityTest extends AndroidTestCase {
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
sendRequest = new SendRequest(1L, true, false, true);
|
||||
sendRequest = new SendRequest(1L);
|
||||
sendFusionTablesActivity = new SendFusionTablesActivity();
|
||||
}
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ public class SendMapsActivityTest extends AndroidTestCase {
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
sendRequest = new SendRequest(1L, true, false, true);
|
||||
sendRequest = new SendRequest(1L);
|
||||
sendMapsActivity = new SendMapsActivity();
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -86,7 +86,7 @@ public class SendMapsAsyncTaskTest extends AndroidTestCase {
|
||||
prepareAndUploadPointsCounter = 0;
|
||||
sendMapsActivityMock = AndroidMock.createMock(SendMapsActivity.class);
|
||||
myTracksProviderUtilsMock = AndroidMock.createMock(MyTracksProviderUtils.class);
|
||||
sendRequest = new SendRequest(TRACK_ID, false, true, false);
|
||||
sendRequest = new SendRequest(TRACK_ID);
|
||||
AndroidMock.expect(sendMapsActivityMock.getApplicationContext()).andReturn(getContext());
|
||||
}
|
||||
|
||||
|
||||
+111
-158
@@ -35,7 +35,7 @@ public class SendRequestTest extends AndroidTestCase {
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
sendRequest = new SendRequest(1, true, true, true);
|
||||
sendRequest = new SendRequest(1);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -46,44 +46,6 @@ public class SendRequestTest extends AndroidTestCase {
|
||||
assertEquals(1, sendRequest.getTrackId());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the method {@link SendRequest#isShowMaps()}. The value should be set
|
||||
* to true when it is initialed in setup method.
|
||||
*/
|
||||
public void testIsShowMaps() {
|
||||
assertEquals(true, sendRequest.isShowMaps());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the method {@link SendRequest#isShowFusionTables()}. The value should
|
||||
* be set to true when it is initialed in setup method.
|
||||
*/
|
||||
public void testIsShowFusionTables() {
|
||||
assertEquals(true, sendRequest.isShowFusionTables());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the method {@link SendRequest#isShowDocs()}. The value should be set
|
||||
* to true when it is initialed in setup method.
|
||||
*/
|
||||
public void testIsShowDocs() {
|
||||
assertEquals(true, sendRequest.isShowDocs());
|
||||
}
|
||||
|
||||
public void testIsShowAll() {
|
||||
assertEquals(true, sendRequest.isShowAll());
|
||||
sendRequest = new SendRequest(1, false, true, true);
|
||||
assertEquals(false, sendRequest.isShowAll());
|
||||
sendRequest = new SendRequest(1, true, false, true);
|
||||
assertEquals(false, sendRequest.isShowAll());
|
||||
sendRequest = new SendRequest(1, true, true, false);
|
||||
assertEquals(false, sendRequest.isShowAll());
|
||||
sendRequest = new SendRequest(1, false, true, false);
|
||||
assertEquals(false, sendRequest.isShowAll());
|
||||
sendRequest = new SendRequest(1, false, false, false);
|
||||
assertEquals(false, sendRequest.isShowAll());
|
||||
}
|
||||
|
||||
public void testIsSendMaps() {
|
||||
assertEquals(false, sendRequest.isSendMaps());
|
||||
sendRequest.setSendMaps(true);
|
||||
@@ -174,120 +136,114 @@ public class SendRequestTest extends AndroidTestCase {
|
||||
* Tests SendRequest.CREATOR.createFromParcel when all values are true.
|
||||
*/
|
||||
public void testCreateFromParcel_true() {
|
||||
Parcel sourceParcel = Parcel.obtain();
|
||||
sourceParcel.setDataPosition(0);
|
||||
sourceParcel.writeLong(2);
|
||||
sourceParcel.writeByte((byte) 1);
|
||||
sourceParcel.writeByte((byte) 1);
|
||||
sourceParcel.writeByte((byte) 1);
|
||||
sourceParcel.writeByte((byte) 1);
|
||||
sourceParcel.writeByte((byte) 1);
|
||||
sourceParcel.writeByte((byte) 1);
|
||||
sourceParcel.writeByte((byte) 1);
|
||||
Parcel parcel = Parcel.obtain();
|
||||
parcel.setDataPosition(0);
|
||||
parcel.writeLong(2);
|
||||
parcel.writeString("");
|
||||
parcel.writeString("");
|
||||
parcel.writeByte((byte) 1);
|
||||
parcel.writeByte((byte) 1);
|
||||
parcel.writeByte((byte) 1);
|
||||
parcel.writeByte((byte) 1);
|
||||
Account account = new Account(ACCOUNTNAME, ACCOUNTYPE);
|
||||
sourceParcel.writeParcelable(account, 0);
|
||||
sourceParcel.writeString(MAPID);
|
||||
sourceParcel.writeByte((byte) 1);
|
||||
sourceParcel.writeByte((byte) 1);
|
||||
sourceParcel.writeByte((byte) 1);
|
||||
sourceParcel.setDataPosition(0);
|
||||
sendRequest = SendRequest.CREATOR.createFromParcel(sourceParcel);
|
||||
parcel.writeParcelable(account, 0);
|
||||
parcel.writeString(MAPID);
|
||||
parcel.writeByte((byte) 1);
|
||||
parcel.writeByte((byte) 1);
|
||||
parcel.writeByte((byte) 1);
|
||||
parcel.setDataPosition(0);
|
||||
sendRequest = SendRequest.CREATOR.createFromParcel(parcel);
|
||||
assertEquals(2, sendRequest.getTrackId());
|
||||
assertEquals(true, sendRequest.isShowMaps());
|
||||
assertEquals(true, sendRequest.isShowFusionTables());
|
||||
assertEquals(true, sendRequest.isShowDocs());
|
||||
assertEquals(true, sendRequest.isSendMaps());
|
||||
assertEquals(true, sendRequest.isSendFusionTables());
|
||||
assertEquals(true, sendRequest.isSendDocs());
|
||||
assertEquals(true, sendRequest.isNewMap());
|
||||
assertEquals("", sendRequest.getSharingAppPackageName());
|
||||
assertEquals("", sendRequest.getSharingAppClassName());
|
||||
assertTrue(sendRequest.isSendMaps());
|
||||
assertTrue(sendRequest.isSendFusionTables());
|
||||
assertTrue(sendRequest.isSendDocs());
|
||||
assertTrue(sendRequest.isNewMap());
|
||||
assertEquals(account, sendRequest.getAccount());
|
||||
assertEquals(MAPID, sendRequest.getMapId());
|
||||
assertEquals(true, sendRequest.isMapsSuccess());
|
||||
assertEquals(true, sendRequest.isFusionTablesSuccess());
|
||||
assertEquals(true, sendRequest.isDocsSuccess());
|
||||
assertTrue(sendRequest.isMapsSuccess());
|
||||
assertTrue(sendRequest.isFusionTablesSuccess());
|
||||
assertTrue(sendRequest.isDocsSuccess());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests SendRequest.CREATOR.createFromParcel when all values are false.
|
||||
*/
|
||||
public void testCreateFromParcel_false() {
|
||||
Parcel sourceParcel = Parcel.obtain();
|
||||
sourceParcel.setDataPosition(0);
|
||||
sourceParcel.writeLong(4);
|
||||
sourceParcel.writeByte((byte) 0);
|
||||
sourceParcel.writeByte((byte) 0);
|
||||
sourceParcel.writeByte((byte) 0);
|
||||
sourceParcel.writeByte((byte) 0);
|
||||
sourceParcel.writeByte((byte) 0);
|
||||
sourceParcel.writeByte((byte) 0);
|
||||
sourceParcel.writeByte((byte) 0);
|
||||
Parcel parcel = Parcel.obtain();
|
||||
parcel.setDataPosition(0);
|
||||
parcel.writeLong(4);
|
||||
parcel.writeString(null);
|
||||
parcel.writeString(null);
|
||||
parcel.writeByte((byte) 0);
|
||||
parcel.writeByte((byte) 0);
|
||||
parcel.writeByte((byte) 0);
|
||||
parcel.writeByte((byte) 0);
|
||||
Account account = new Account(ACCOUNTNAME, ACCOUNTYPE);
|
||||
sourceParcel.writeParcelable(account, 0);
|
||||
sourceParcel.writeString(MAPID);
|
||||
sourceParcel.writeByte((byte) 0);
|
||||
sourceParcel.writeByte((byte) 0);
|
||||
sourceParcel.writeByte((byte) 0);
|
||||
sourceParcel.setDataPosition(0);
|
||||
sendRequest = SendRequest.CREATOR.createFromParcel(sourceParcel);
|
||||
parcel.writeParcelable(account, 0);
|
||||
parcel.writeString(MAPID);
|
||||
parcel.writeByte((byte) 0);
|
||||
parcel.writeByte((byte) 0);
|
||||
parcel.writeByte((byte) 0);
|
||||
parcel.setDataPosition(0);
|
||||
sendRequest = SendRequest.CREATOR.createFromParcel(parcel);
|
||||
assertEquals(4, sendRequest.getTrackId());
|
||||
assertEquals(false, sendRequest.isShowMaps());
|
||||
assertEquals(false, sendRequest.isShowFusionTables());
|
||||
assertEquals(false, sendRequest.isShowDocs());
|
||||
assertEquals(false, sendRequest.isSendMaps());
|
||||
assertEquals(false, sendRequest.isSendFusionTables());
|
||||
assertEquals(false, sendRequest.isSendDocs());
|
||||
assertEquals(false, sendRequest.isNewMap());
|
||||
assertNull(sendRequest.getSharingAppPackageName());
|
||||
assertNull(sendRequest.getSharingAppClassName());
|
||||
assertFalse(sendRequest.isSendMaps());
|
||||
assertFalse(sendRequest.isSendFusionTables());
|
||||
assertFalse(sendRequest.isSendDocs());
|
||||
assertFalse(sendRequest.isNewMap());
|
||||
assertEquals(account, sendRequest.getAccount());
|
||||
assertEquals(MAPID, sendRequest.getMapId());
|
||||
assertEquals(false, sendRequest.isMapsSuccess());
|
||||
assertEquals(false, sendRequest.isFusionTablesSuccess());
|
||||
assertEquals(false, sendRequest.isDocsSuccess());
|
||||
assertFalse(sendRequest.isMapsSuccess());
|
||||
assertFalse(sendRequest.isFusionTablesSuccess());
|
||||
assertFalse(sendRequest.isDocsSuccess());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests {@link SendRequest#writeToParcel(Parcel, int)} when all input values
|
||||
* are true or affirmative.
|
||||
* Tests {@link SendRequest#writeToParcel(Parcel, int)} with default values.
|
||||
*/
|
||||
public void testWriteToParcel_allTrue() {
|
||||
sendRequest = new SendRequest(1, false, false, false);
|
||||
Parcel parcelWrite1st = Parcel.obtain();
|
||||
parcelWrite1st.setDataPosition(0);
|
||||
sendRequest.writeToParcel(parcelWrite1st, 1);
|
||||
parcelWrite1st.setDataPosition(0);
|
||||
long trackId = parcelWrite1st.readLong();
|
||||
boolean showMaps = parcelWrite1st.readByte() == 1;
|
||||
boolean showFusionTables = parcelWrite1st.readByte() == 1;
|
||||
boolean showDocs = parcelWrite1st.readByte() == 1;
|
||||
boolean sendMaps = parcelWrite1st.readByte() == 1;
|
||||
boolean sendFusionTables = parcelWrite1st.readByte() == 1;
|
||||
boolean sendDocs = parcelWrite1st.readByte() == 1;
|
||||
boolean newMap = parcelWrite1st.readByte() == 1;
|
||||
Parcelable account = parcelWrite1st.readParcelable(null);
|
||||
String mapId = parcelWrite1st.readString();
|
||||
boolean mapsSuccess = parcelWrite1st.readByte() == 1;
|
||||
boolean fusionTablesSuccess = parcelWrite1st.readByte() == 1;
|
||||
boolean docsSuccess = parcelWrite1st.readByte() == 1;
|
||||
public void testWriteToParcel_default() {
|
||||
sendRequest = new SendRequest(1);
|
||||
Parcel parcel = Parcel.obtain();
|
||||
parcel.setDataPosition(0);
|
||||
sendRequest.writeToParcel(parcel, 1);
|
||||
parcel.setDataPosition(0);
|
||||
long trackId = parcel.readLong();
|
||||
String sharingAppPackageName = parcel.readString();
|
||||
String sharingAppClassName = parcel.readString();
|
||||
boolean sendMaps = parcel.readByte() == 1;
|
||||
boolean sendFusionTables = parcel.readByte() == 1;
|
||||
boolean sendDocs = parcel.readByte() == 1;
|
||||
boolean newMap = parcel.readByte() == 1;
|
||||
Parcelable account = parcel.readParcelable(null);
|
||||
String mapId = parcel.readString();
|
||||
boolean mapsSuccess = parcel.readByte() == 1;
|
||||
boolean fusionTablesSuccess = parcel.readByte() == 1;
|
||||
boolean docsSuccess = parcel.readByte() == 1;
|
||||
assertEquals(1, trackId);
|
||||
assertEquals(false, showMaps);
|
||||
assertEquals(false, showFusionTables);
|
||||
assertEquals(false, showDocs);
|
||||
assertEquals(false, sendMaps);
|
||||
assertEquals(false, sendFusionTables);
|
||||
assertEquals(false, sendDocs);
|
||||
assertEquals(false, newMap);
|
||||
assertEquals(null, account);
|
||||
assertEquals(null, mapId);
|
||||
assertEquals(false, mapsSuccess);
|
||||
assertEquals(false, fusionTablesSuccess);
|
||||
assertEquals(false, docsSuccess);
|
||||
assertNull(sharingAppPackageName);
|
||||
assertNull(sharingAppClassName);
|
||||
assertFalse(sendMaps);
|
||||
assertFalse(sendFusionTables);
|
||||
assertFalse(sendDocs);
|
||||
assertFalse(newMap);
|
||||
assertNull(account);
|
||||
assertNull(mapId);
|
||||
assertFalse(mapsSuccess);
|
||||
assertFalse(fusionTablesSuccess);
|
||||
assertFalse(docsSuccess);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests {@link SendRequest#writeToParcel(Parcel, int)} when all input values
|
||||
* are false or negative.
|
||||
* Tests {@link SendRequest#writeToParcel(Parcel, int)}.
|
||||
*/
|
||||
public void testWriteToParcel_allFalse() {
|
||||
sendRequest = new SendRequest(4, true, true, true);
|
||||
public void testWriteToParcel() {
|
||||
sendRequest = new SendRequest(4);
|
||||
sendRequest.setSharingAppPackageName("package");
|
||||
sendRequest.setSharingAppClassName("class");
|
||||
sendRequest.setSendMaps(true);
|
||||
sendRequest.setSendFusionTables(true);
|
||||
sendRequest.setSendDocs(true);
|
||||
@@ -298,36 +254,33 @@ public class SendRequestTest extends AndroidTestCase {
|
||||
sendRequest.setMapsSuccess(true);
|
||||
sendRequest.setFusionTablesSuccess(true);
|
||||
sendRequest.setDocsSuccess(true);
|
||||
Parcel parcelWrite2nd = Parcel.obtain();
|
||||
parcelWrite2nd.setDataPosition(0);
|
||||
sendRequest.writeToParcel(parcelWrite2nd, 1);
|
||||
parcelWrite2nd.setDataPosition(0);
|
||||
long trackId = parcelWrite2nd.readLong();
|
||||
boolean showMaps = parcelWrite2nd.readByte() == 1;
|
||||
boolean showFusionTables = parcelWrite2nd.readByte() == 1;
|
||||
boolean showDocs = parcelWrite2nd.readByte() == 1;
|
||||
boolean sendMaps = parcelWrite2nd.readByte() == 1;
|
||||
boolean sendFusionTables = parcelWrite2nd.readByte() == 1;
|
||||
boolean sendDocs = parcelWrite2nd.readByte() == 1;
|
||||
boolean newMap = parcelWrite2nd.readByte() == 1;
|
||||
Parcelable account = parcelWrite2nd.readParcelable(null);
|
||||
String mapId = parcelWrite2nd.readString();
|
||||
boolean mapsSuccess = parcelWrite2nd.readByte() == 1;
|
||||
boolean fusionTablesSuccess = parcelWrite2nd.readByte() == 1;
|
||||
boolean docsSuccess = parcelWrite2nd.readByte() == 1;
|
||||
Parcel parcel = Parcel.obtain();
|
||||
parcel.setDataPosition(0);
|
||||
sendRequest.writeToParcel(parcel, 1);
|
||||
parcel.setDataPosition(0);
|
||||
long trackId = parcel.readLong();
|
||||
String sharingAppPackageName = parcel.readString();
|
||||
String sharingAppClassName = parcel.readString();
|
||||
boolean sendMaps = parcel.readByte() == 1;
|
||||
boolean sendFusionTables = parcel.readByte() == 1;
|
||||
boolean sendDocs = parcel.readByte() == 1;
|
||||
boolean newMap = parcel.readByte() == 1;
|
||||
Parcelable account = parcel.readParcelable(null);
|
||||
String mapId = parcel.readString();
|
||||
boolean mapsSuccess = parcel.readByte() == 1;
|
||||
boolean fusionTablesSuccess = parcel.readByte() == 1;
|
||||
boolean docsSuccess = parcel.readByte() == 1;
|
||||
assertEquals(4, trackId);
|
||||
assertEquals(true, showMaps);
|
||||
assertEquals(true, showFusionTables);
|
||||
assertEquals(true, showDocs);
|
||||
assertEquals(true, sendMaps);
|
||||
assertEquals(true, sendFusionTables);
|
||||
assertEquals(true, sendDocs);
|
||||
assertEquals(true, newMap);
|
||||
assertEquals("package", sharingAppPackageName);
|
||||
assertEquals("class", sharingAppClassName);
|
||||
assertTrue(sendMaps);
|
||||
assertTrue(sendFusionTables);
|
||||
assertTrue(sendDocs);
|
||||
assertTrue(newMap);
|
||||
assertEquals(accountNew, account);
|
||||
assertEquals(MAPID, mapId);
|
||||
assertEquals(true, mapsSuccess);
|
||||
assertEquals(true, fusionTablesSuccess);
|
||||
assertEquals(true, docsSuccess);
|
||||
assertTrue(mapsSuccess);
|
||||
assertTrue(fusionTablesSuccess);
|
||||
assertTrue(docsSuccess);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -97,7 +97,7 @@ public class UploadResultActivityTest
|
||||
private void initialActivity(boolean isSendMaps, boolean isSendFusionTables, boolean isSendDocs,
|
||||
boolean isMapsSuccess, boolean isFusionTablesSuccess, boolean isDocsSuccess) {
|
||||
Intent intent = new Intent();
|
||||
SendRequest sendRequest = new SendRequest(1L, true, true, true);
|
||||
SendRequest sendRequest = new SendRequest(1L);
|
||||
sendRequest.setSendMaps(isSendMaps);
|
||||
sendRequest.setSendFusionTables(isSendFusionTables);
|
||||
sendRequest.setSendDocs(isSendDocs);
|
||||
|
||||
+7
-41
@@ -50,7 +50,7 @@ public class UploadServiceChooserActivityTest extends
|
||||
*/
|
||||
public void testOnCreateDialog_displayAll() {
|
||||
// Initials activity to display all send items.
|
||||
initialActivity(true, true, true);
|
||||
initialActivity();
|
||||
instrumentation.waitForIdleSync();
|
||||
assertTrue(getMapsCheckBox().isShown());
|
||||
assertTrue(getFusionTablesCheckBox().isShown());
|
||||
@@ -79,46 +79,13 @@ public class UploadServiceChooserActivityTest extends
|
||||
assertFalse(getExistingMapRadioButton().isShown());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the logic to display only the "Send to Google Maps" option.
|
||||
*/
|
||||
public void testOnCreateDialog_displayOne() {
|
||||
// Initials activity to display all send items.
|
||||
initialActivity(true, false, false);
|
||||
instrumentation.waitForIdleSync();
|
||||
assertTrue(getMapsCheckBox().isShown());
|
||||
|
||||
// Clicks to enable this items.
|
||||
uploadServiceChooserActivity.runOnUiThread(new Runnable() {
|
||||
public void run() {
|
||||
if (!getMapsCheckBox().isChecked()) {
|
||||
getMapsCheckBox().performClick();
|
||||
}
|
||||
}
|
||||
});
|
||||
instrumentation.waitForIdleSync();
|
||||
assertTrue(getMapsCheckBox().isShown());
|
||||
assertTrue(getNewMapRadioButton().isShown());
|
||||
assertTrue(getExistingMapRadioButton().isShown());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the logic to display no option.
|
||||
*/
|
||||
public void testOnCreateDialog_displayNone() {
|
||||
initialActivity(false, false, false);
|
||||
assertFalse(getMapsCheckBox().isShown());
|
||||
assertFalse(getFusionTablesCheckBox().isShown());
|
||||
assertFalse(getDocsCheckBox().isShown());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the logic to initial state of check box to unchecked. This test cover
|
||||
* code in method {@link UploadServiceChooserActivity#onCreateDialog(int)},
|
||||
* {@link UploadServiceChooserActivity#initState()}.
|
||||
*/
|
||||
public void testOnCreateDialog_initStateUnchecked() {
|
||||
initialActivity(true, true, true);
|
||||
initialActivity();
|
||||
// Initial all values to false in SharedPreferences.
|
||||
PreferencesUtils.setBoolean(uploadServiceChooserActivity, R.string.send_to_maps_key, false);
|
||||
PreferencesUtils.setBoolean(
|
||||
@@ -141,7 +108,7 @@ public class UploadServiceChooserActivityTest extends
|
||||
* {@link UploadServiceChooserActivity#initState()}.
|
||||
*/
|
||||
public void testOnCreateDialog_initStateChecked() {
|
||||
initialActivity(true, true, true);
|
||||
initialActivity();
|
||||
// Initial all values to true in SharedPreferences.
|
||||
PreferencesUtils.setBoolean(uploadServiceChooserActivity, R.string.pick_existing_map_key, true);
|
||||
PreferencesUtils.setBoolean(uploadServiceChooserActivity, R.string.send_to_maps_key, true);
|
||||
@@ -168,7 +135,7 @@ public class UploadServiceChooserActivityTest extends
|
||||
* {@link UploadServiceChooserActivity#saveState()},
|
||||
*/
|
||||
public void testOnCreateDialog_saveState() {
|
||||
initialActivity(true, true, true);
|
||||
initialActivity();
|
||||
// Initial all values to true in SharedPreferences.
|
||||
PreferencesUtils.setBoolean(uploadServiceChooserActivity, R.string.send_to_maps_key, true);
|
||||
PreferencesUtils.setBoolean(
|
||||
@@ -197,7 +164,7 @@ public class UploadServiceChooserActivityTest extends
|
||||
* {@link UploadServiceChooserActivity#startNextActivity()}.
|
||||
*/
|
||||
public void testOnCreateDialog_startNextActivity() {
|
||||
initialActivity(true, true, true);
|
||||
initialActivity();
|
||||
// Initial all values to true or false in SharedPreferences.
|
||||
PreferencesUtils.setBoolean(uploadServiceChooserActivity, R.string.send_to_maps_key, true);
|
||||
PreferencesUtils.setBoolean(uploadServiceChooserActivity, R.string.send_to_docs_key, true);
|
||||
@@ -224,10 +191,9 @@ public class UploadServiceChooserActivityTest extends
|
||||
* @param showFusionTables
|
||||
* @param showDocs
|
||||
*/
|
||||
private void initialActivity(boolean showMaps, boolean showFusionTables, boolean showDocs) {
|
||||
private void initialActivity() {
|
||||
Intent intent = new Intent();
|
||||
intent.putExtra(SendRequest.SEND_REQUEST_KEY, new SendRequest(1L, showMaps, showFusionTables,
|
||||
showDocs));
|
||||
intent.putExtra(SendRequest.SEND_REQUEST_KEY, new SendRequest(1L));
|
||||
setActivityIntent(intent);
|
||||
uploadServiceChooserActivity = this.getActivity();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user