forked from upstream-mirrors/OpenTracks
Add share via drive in the contextual menu.
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 3.4 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 3.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 3.6 KiB |
@@ -15,6 +15,11 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
-->
|
-->
|
||||||
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
|
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
|
||||||
|
<item
|
||||||
|
android:icon="@drawable/menu_share_drive"
|
||||||
|
android:id="@+id/list_context_menu_share_drive"
|
||||||
|
android:showAsAction="ifRoom"
|
||||||
|
android:title="@string/menu_share_drive"/>
|
||||||
<item
|
<item
|
||||||
android:icon="@drawable/menu_show_on_map"
|
android:icon="@drawable/menu_show_on_map"
|
||||||
android:id="@+id/list_context_menu_show_on_map"
|
android:id="@+id/list_context_menu_show_on_map"
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ limitations under the License.
|
|||||||
android:title="@string/menu_share">
|
android:title="@string/menu_share">
|
||||||
</item>
|
</item>
|
||||||
<item
|
<item
|
||||||
android:icon="@drawable/menu_share"
|
android:icon="@drawable/menu_share_drive"
|
||||||
android:id="@+id/track_detail_share_drive"
|
android:id="@+id/track_detail_share_drive"
|
||||||
android:orderInCategory="4"
|
android:orderInCategory="4"
|
||||||
android:showAsAction="ifRoom"
|
android:showAsAction="ifRoom"
|
||||||
|
|||||||
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package com.google.android.apps.mytracks;
|
package com.google.android.apps.mytracks;
|
||||||
|
|
||||||
|
import android.view.Menu;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Callback when an item in the contextual action mode is selected.
|
* Callback when an item in the contextual action mode is selected.
|
||||||
*
|
*
|
||||||
@@ -33,18 +35,11 @@ public interface ContextualActionModeCallback {
|
|||||||
public boolean onClick(int itemId, int position, long id);
|
public boolean onClick(int itemId, int position, long id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* True if the item in the selected row can be edited.
|
* Invoked to prepare the menu for the selected item.
|
||||||
*
|
*
|
||||||
* @param position the position of the selected row
|
* @param menu the menu
|
||||||
* @param id the id of the selected row
|
* @param position the position of the selected item
|
||||||
|
* @param id the id of the selected item
|
||||||
*/
|
*/
|
||||||
public boolean canEdit(int position, long id);
|
public void onPrepare(Menu menu, int position, long id);
|
||||||
|
|
||||||
/**
|
|
||||||
* True if the item in the selected row can be deleted.
|
|
||||||
*
|
|
||||||
* @param position the position of the selected row
|
|
||||||
* @param id the id of the selected row
|
|
||||||
*/
|
|
||||||
public boolean canDelete(int position, long id);
|
|
||||||
}
|
}
|
||||||
@@ -73,16 +73,12 @@ public class MarkerListActivity extends AbstractMyTracksActivity implements Dele
|
|||||||
return handleContextItem(itemId, id);
|
return handleContextItem(itemId, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void onPrepare(Menu menu, int position, long id) {
|
||||||
public boolean canEdit(int position, long id) {
|
|
||||||
Track track = myTracksProviderUtils.getTrack(trackId);
|
Track track = myTracksProviderUtils.getTrack(trackId);
|
||||||
return !track.isSharedWithMe();
|
menu.findItem(R.id.list_context_menu_share_drive).setVisible(false);
|
||||||
}
|
menu.findItem(R.id.list_context_menu_show_on_map).setVisible(true);
|
||||||
|
menu.findItem(R.id.list_context_menu_edit).setVisible(!track.isSharedWithMe());
|
||||||
@Override
|
menu.findItem(R.id.list_context_menu_delete).setVisible(!track.isSharedWithMe());
|
||||||
public boolean canDelete(int poistion, long id) {
|
|
||||||
Track track = myTracksProviderUtils.getTrack(trackId);
|
|
||||||
return !track.isSharedWithMe();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -169,7 +165,7 @@ public class MarkerListActivity extends AbstractMyTracksActivity implements Dele
|
|||||||
int iconId = statistics ? R.drawable.yellow_pushpin : R.drawable.blue_pushpin;
|
int iconId = statistics ? R.drawable.yellow_pushpin : R.drawable.blue_pushpin;
|
||||||
String category = statistics ? null : cursor.getString(categoryIndex);
|
String category = statistics ? null : cursor.getString(categoryIndex);
|
||||||
String description = statistics ? null : cursor.getString(descriptionIndex);
|
String description = statistics ? null : cursor.getString(descriptionIndex);
|
||||||
|
|
||||||
ListItemUtils.setListItem(MarkerListActivity.this, view, false, true, iconId,
|
ListItemUtils.setListItem(MarkerListActivity.this, view, false, true, iconId,
|
||||||
R.string.icon_marker, cursor.getString(nameIndex), category, null, null,
|
R.string.icon_marker, cursor.getString(nameIndex), category, null, null,
|
||||||
cursor.getLong(timeIndex), description);
|
cursor.getLong(timeIndex), description);
|
||||||
@@ -259,9 +255,7 @@ public class MarkerListActivity extends AbstractMyTracksActivity implements Dele
|
|||||||
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
|
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
|
||||||
super.onCreateContextMenu(menu, v, menuInfo);
|
super.onCreateContextMenu(menu, v, menuInfo);
|
||||||
getMenuInflater().inflate(R.menu.list_context_menu, menu);
|
getMenuInflater().inflate(R.menu.list_context_menu, menu);
|
||||||
Track track = myTracksProviderUtils.getTrack(trackId);
|
contextualActionModeCallback.onPrepare(menu, 0, 0);
|
||||||
menu.findItem(R.id.list_context_menu_edit).setVisible(!track.isSharedWithMe());
|
|
||||||
menu.findItem(R.id.list_context_menu_delete).setVisible(!track.isSharedWithMe());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -24,6 +24,9 @@ import com.google.android.apps.mytracks.content.SearchEngineProvider;
|
|||||||
import com.google.android.apps.mytracks.content.Track;
|
import com.google.android.apps.mytracks.content.Track;
|
||||||
import com.google.android.apps.mytracks.content.Waypoint;
|
import com.google.android.apps.mytracks.content.Waypoint;
|
||||||
import com.google.android.apps.mytracks.content.Waypoint.WaypointType;
|
import com.google.android.apps.mytracks.content.Waypoint.WaypointType;
|
||||||
|
import com.google.android.apps.mytracks.fragments.AddPeopleDialogFragment;
|
||||||
|
import com.google.android.apps.mytracks.fragments.ConfirmDialogFragment;
|
||||||
|
import com.google.android.apps.mytracks.fragments.ConfirmDialogFragment.ConfirmCaller;
|
||||||
import com.google.android.apps.mytracks.fragments.DeleteOneMarkerDialogFragment;
|
import com.google.android.apps.mytracks.fragments.DeleteOneMarkerDialogFragment;
|
||||||
import com.google.android.apps.mytracks.fragments.DeleteOneMarkerDialogFragment.DeleteOneMarkerCaller;
|
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;
|
||||||
@@ -75,7 +78,7 @@ import java.util.SortedSet;
|
|||||||
* @author Rodrigo Damazio
|
* @author Rodrigo Damazio
|
||||||
*/
|
*/
|
||||||
public class SearchListActivity extends AbstractMyTracksActivity
|
public class SearchListActivity extends AbstractMyTracksActivity
|
||||||
implements DeleteOneTrackCaller, DeleteOneMarkerCaller {
|
implements ConfirmCaller, DeleteOneTrackCaller, DeleteOneMarkerCaller {
|
||||||
|
|
||||||
private static final String TAG = SearchListActivity.class.getSimpleName();
|
private static final String TAG = SearchListActivity.class.getSimpleName();
|
||||||
|
|
||||||
@@ -131,25 +134,17 @@ public class SearchListActivity extends AbstractMyTracksActivity
|
|||||||
return handleContextItem(itemId, position);
|
return handleContextItem(itemId, position);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void onPrepare(Menu menu, int position, long id) {
|
||||||
public boolean canEdit(int position, long id) {
|
|
||||||
Map<String, Object> item = arrayAdapter.getItem(position);
|
|
||||||
Long trackId = (Long) item.get(TRACK_ID_FIELD);
|
|
||||||
Track track = myTracksProviderUtils.getTrack(trackId);
|
|
||||||
return !track.isSharedWithMe();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canDelete(int position, long id) {
|
|
||||||
Map<String, Object> item = arrayAdapter.getItem(position);
|
Map<String, Object> item = arrayAdapter.getItem(position);
|
||||||
Long trackId = (Long) item.get(TRACK_ID_FIELD);
|
Long trackId = (Long) item.get(TRACK_ID_FIELD);
|
||||||
Long markerId = (Long) item.get(MARKER_ID_FIELD);
|
Long markerId = (Long) item.get(MARKER_ID_FIELD);
|
||||||
if (markerId != null) {
|
Track track = myTracksProviderUtils.getTrack(trackId);
|
||||||
Track track = myTracksProviderUtils.getTrack(trackId);
|
menu.findItem(R.id.list_context_menu_share_drive)
|
||||||
return !track.isSharedWithMe();
|
.setVisible(markerId == null && !track.isSharedWithMe());
|
||||||
} else {
|
menu.findItem(R.id.list_context_menu_show_on_map).setVisible(markerId != null);
|
||||||
return true;
|
menu.findItem(R.id.list_context_menu_edit).setVisible(!track.isSharedWithMe());
|
||||||
}
|
menu.findItem(R.id.list_context_menu_delete)
|
||||||
|
.setVisible(markerId == null || !track.isSharedWithMe());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -295,14 +290,8 @@ public class SearchListActivity extends AbstractMyTracksActivity
|
|||||||
super.onCreateContextMenu(menu, v, menuInfo);
|
super.onCreateContextMenu(menu, v, menuInfo);
|
||||||
getMenuInflater().inflate(R.menu.list_context_menu, menu);
|
getMenuInflater().inflate(R.menu.list_context_menu, menu);
|
||||||
|
|
||||||
Map<String, Object> item = arrayAdapter.getItem(((AdapterContextMenuInfo) menuInfo).position);
|
int position = ((AdapterContextMenuInfo) menuInfo).position;
|
||||||
Long trackId = (Long) item.get(TRACK_ID_FIELD);
|
contextualActionModeCallback.onPrepare(menu, position, 0);
|
||||||
Long markerId = (Long) item.get(MARKER_ID_FIELD);
|
|
||||||
Track track = myTracksProviderUtils.getTrack(trackId);
|
|
||||||
menu.findItem(R.id.list_context_menu_edit).setVisible(!track.isSharedWithMe());
|
|
||||||
if (markerId != null) {
|
|
||||||
menu.findItem(R.id.list_context_menu_delete).setVisible(!track.isSharedWithMe());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -337,6 +326,12 @@ public class SearchListActivity extends AbstractMyTracksActivity
|
|||||||
Long markerId = (Long) item.get(MARKER_ID_FIELD);
|
Long markerId = (Long) item.get(MARKER_ID_FIELD);
|
||||||
Intent intent;
|
Intent intent;
|
||||||
switch (itemId) {
|
switch (itemId) {
|
||||||
|
case R.id.list_context_menu_share_drive:
|
||||||
|
ConfirmDialogFragment.newInstance(R.string.confirm_share_drive_key,
|
||||||
|
PreferencesUtils.CONFIRM_SHARE_DRIVE_DEFAULT,
|
||||||
|
getString(R.string.share_track_drive_confirm_message), trackId)
|
||||||
|
.show(getSupportFragmentManager(), ConfirmDialogFragment.CONFIRM_DIALOG_TAG);
|
||||||
|
return true;
|
||||||
case R.id.list_context_menu_show_on_map:
|
case R.id.list_context_menu_show_on_map:
|
||||||
if (markerId != null) {
|
if (markerId != null) {
|
||||||
intent = IntentUtils.newIntent(this, TrackDetailActivity.class)
|
intent = IntentUtils.newIntent(this, TrackDetailActivity.class)
|
||||||
@@ -509,6 +504,17 @@ public class SearchListActivity extends AbstractMyTracksActivity
|
|||||||
resultMap.put(MARKER_ID_FIELD, null);
|
resultMap.put(MARKER_ID_FIELD, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onConfirmed(int confirmId, long trackId) {
|
||||||
|
switch (confirmId) {
|
||||||
|
case R.string.confirm_share_drive_key:
|
||||||
|
AddPeopleDialogFragment.newInstance(trackId)
|
||||||
|
.show(getSupportFragmentManager(), AddPeopleDialogFragment.ADD_PEOPLE_DIALOG_TAG);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TrackRecordingServiceConnection getTrackRecordingServiceConnection() {
|
public TrackRecordingServiceConnection getTrackRecordingServiceConnection() {
|
||||||
return trackRecordingServiceConnection;
|
return trackRecordingServiceConnection;
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import com.google.android.apps.mytracks.fragments.ChartFragment;
|
|||||||
import com.google.android.apps.mytracks.fragments.ChooseActivityDialogFragment;
|
import com.google.android.apps.mytracks.fragments.ChooseActivityDialogFragment;
|
||||||
import com.google.android.apps.mytracks.fragments.ChooseUploadServiceDialogFragment;
|
import com.google.android.apps.mytracks.fragments.ChooseUploadServiceDialogFragment;
|
||||||
import com.google.android.apps.mytracks.fragments.ConfirmDialogFragment;
|
import com.google.android.apps.mytracks.fragments.ConfirmDialogFragment;
|
||||||
|
import com.google.android.apps.mytracks.fragments.ConfirmDialogFragment.ConfirmCaller;
|
||||||
import com.google.android.apps.mytracks.fragments.DeleteOneTrackDialogFragment;
|
import com.google.android.apps.mytracks.fragments.DeleteOneTrackDialogFragment;
|
||||||
import com.google.android.apps.mytracks.fragments.DeleteOneTrackDialogFragment.DeleteOneTrackCaller;
|
import com.google.android.apps.mytracks.fragments.DeleteOneTrackDialogFragment.DeleteOneTrackCaller;
|
||||||
import com.google.android.apps.mytracks.fragments.FrequencyDialogFragment;
|
import com.google.android.apps.mytracks.fragments.FrequencyDialogFragment;
|
||||||
@@ -70,7 +71,7 @@ import java.util.Locale;
|
|||||||
* @author Leif Hendrik Wilden
|
* @author Leif Hendrik Wilden
|
||||||
* @author Rodrigo Damazio
|
* @author Rodrigo Damazio
|
||||||
*/
|
*/
|
||||||
public class TrackDetailActivity extends AbstractMyTracksActivity implements DeleteOneTrackCaller {
|
public class TrackDetailActivity extends AbstractMyTracksActivity implements ConfirmCaller, DeleteOneTrackCaller {
|
||||||
|
|
||||||
public static final String EXTRA_TRACK_ID = "track_id";
|
public static final String EXTRA_TRACK_ID = "track_id";
|
||||||
public static final String EXTRA_MARKER_ID = "marker_id";
|
public static final String EXTRA_MARKER_ID = "marker_id";
|
||||||
@@ -322,34 +323,6 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
|
|||||||
return super.onPrepareOptionsMenu(menu);
|
return super.onPrepareOptionsMenu(menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Invokes when the confirm dialog is done.
|
|
||||||
*
|
|
||||||
* @param id the confirm id
|
|
||||||
*/
|
|
||||||
public void onConfirmDialogDone(int id) {
|
|
||||||
switch (id) {
|
|
||||||
case R.string.confirm_play_earth_key:
|
|
||||||
AnalyticsUtils.sendPageViews(this, "/action/play");
|
|
||||||
Intent intent = IntentUtils.newIntent(this, SaveActivity.class)
|
|
||||||
.putExtra(SaveActivity.EXTRA_TRACK_ID, trackId)
|
|
||||||
.putExtra(SaveActivity.EXTRA_TRACK_FILE_FORMAT, (Parcelable) TrackFileFormat.KML)
|
|
||||||
.putExtra(SaveActivity.EXTRA_PLAY_TRACK, true);
|
|
||||||
startActivity(intent);
|
|
||||||
break;
|
|
||||||
case R.string.confirm_share_map_key:
|
|
||||||
AnalyticsUtils.sendPageViews(this, "/action/share");
|
|
||||||
ChooseActivityDialogFragment.newInstance(trackId, null).show(
|
|
||||||
getSupportFragmentManager(), ChooseActivityDialogFragment.CHOOSE_ACTIVITY_DIALOG_TAG);
|
|
||||||
break;
|
|
||||||
case R.string.confirm_share_drive_key:
|
|
||||||
AddPeopleDialogFragment.newInstance(trackId)
|
|
||||||
.show(getSupportFragmentManager(), AddPeopleDialogFragment.ADD_PEOPLE_DIALOG_TAG);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(MenuItem item) {
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
Intent intent;
|
Intent intent;
|
||||||
@@ -364,7 +337,7 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
|
|||||||
if (isEarthInstalled()) {
|
if (isEarthInstalled()) {
|
||||||
ConfirmDialogFragment.newInstance(R.string.confirm_play_earth_key,
|
ConfirmDialogFragment.newInstance(R.string.confirm_play_earth_key,
|
||||||
PreferencesUtils.CONFIRM_PLAY_EARTH_DEFAULT,
|
PreferencesUtils.CONFIRM_PLAY_EARTH_DEFAULT,
|
||||||
getString(R.string.track_detail_play_confirm_message))
|
getString(R.string.track_detail_play_confirm_message), trackId)
|
||||||
.show(getSupportFragmentManager(), ConfirmDialogFragment.CONFIRM_DIALOG_TAG);
|
.show(getSupportFragmentManager(), ConfirmDialogFragment.CONFIRM_DIALOG_TAG);
|
||||||
} else {
|
} else {
|
||||||
new InstallEarthDialogFragment().show(
|
new InstallEarthDialogFragment().show(
|
||||||
@@ -374,13 +347,13 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
|
|||||||
case R.id.track_detail_share:
|
case R.id.track_detail_share:
|
||||||
ConfirmDialogFragment.newInstance(R.string.confirm_share_map_key,
|
ConfirmDialogFragment.newInstance(R.string.confirm_share_map_key,
|
||||||
PreferencesUtils.CONFIRM_SHARE_MAP_DEFAULT, StringUtils.getHtml(
|
PreferencesUtils.CONFIRM_SHARE_MAP_DEFAULT, StringUtils.getHtml(
|
||||||
this, R.string.share_track_map_confirm_message, R.string.maps_public_unlisted_url))
|
this, R.string.share_track_map_confirm_message, R.string.maps_public_unlisted_url),
|
||||||
.show(getSupportFragmentManager(), ConfirmDialogFragment.CONFIRM_DIALOG_TAG);
|
trackId).show(getSupportFragmentManager(), ConfirmDialogFragment.CONFIRM_DIALOG_TAG);
|
||||||
return true;
|
return true;
|
||||||
case R.id.track_detail_share_drive:
|
case R.id.track_detail_share_drive:
|
||||||
ConfirmDialogFragment.newInstance(R.string.confirm_share_drive_key,
|
ConfirmDialogFragment.newInstance(R.string.confirm_share_drive_key,
|
||||||
PreferencesUtils.CONFIRM_SHARE_DRIVE_DEFAULT,
|
PreferencesUtils.CONFIRM_SHARE_DRIVE_DEFAULT,
|
||||||
getString(R.string.share_track_drive_confirm_message))
|
getString(R.string.share_track_drive_confirm_message), trackId)
|
||||||
.show(getSupportFragmentManager(), ConfirmDialogFragment.CONFIRM_DIALOG_TAG);
|
.show(getSupportFragmentManager(), ConfirmDialogFragment.CONFIRM_DIALOG_TAG);
|
||||||
return true;
|
return true;
|
||||||
case R.id.track_detail_markers:
|
case R.id.track_detail_markers:
|
||||||
@@ -455,6 +428,30 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
|
|||||||
return super.onTrackballEvent(event);
|
return super.onTrackballEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onConfirmed(int confirmId, long confirmTrackId) {
|
||||||
|
switch (confirmId) {
|
||||||
|
case R.string.confirm_play_earth_key:
|
||||||
|
AnalyticsUtils.sendPageViews(this, "/action/play");
|
||||||
|
Intent intent = IntentUtils.newIntent(this, SaveActivity.class)
|
||||||
|
.putExtra(SaveActivity.EXTRA_TRACK_ID, confirmTrackId)
|
||||||
|
.putExtra(SaveActivity.EXTRA_TRACK_FILE_FORMAT, (Parcelable) TrackFileFormat.KML)
|
||||||
|
.putExtra(SaveActivity.EXTRA_PLAY_TRACK, true);
|
||||||
|
startActivity(intent);
|
||||||
|
break;
|
||||||
|
case R.string.confirm_share_map_key:
|
||||||
|
AnalyticsUtils.sendPageViews(this, "/action/share");
|
||||||
|
ChooseActivityDialogFragment.newInstance(confirmTrackId, null).show(
|
||||||
|
getSupportFragmentManager(), ChooseActivityDialogFragment.CHOOSE_ACTIVITY_DIALOG_TAG);
|
||||||
|
break;
|
||||||
|
case R.string.confirm_share_drive_key:
|
||||||
|
AddPeopleDialogFragment.newInstance(confirmTrackId)
|
||||||
|
.show(getSupportFragmentManager(), AddPeopleDialogFragment.ADD_PEOPLE_DIALOG_TAG);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TrackRecordingServiceConnection getTrackRecordingServiceConnection() {
|
public TrackRecordingServiceConnection getTrackRecordingServiceConnection() {
|
||||||
return trackRecordingServiceConnection;
|
return trackRecordingServiceConnection;
|
||||||
|
|||||||
@@ -23,6 +23,9 @@ import com.google.android.apps.mytracks.content.TrackDataListener;
|
|||||||
import com.google.android.apps.mytracks.content.TrackDataType;
|
import com.google.android.apps.mytracks.content.TrackDataType;
|
||||||
import com.google.android.apps.mytracks.content.TracksColumns;
|
import com.google.android.apps.mytracks.content.TracksColumns;
|
||||||
import com.google.android.apps.mytracks.content.Waypoint;
|
import com.google.android.apps.mytracks.content.Waypoint;
|
||||||
|
import com.google.android.apps.mytracks.fragments.AddPeopleDialogFragment;
|
||||||
|
import com.google.android.apps.mytracks.fragments.ConfirmDialogFragment;
|
||||||
|
import com.google.android.apps.mytracks.fragments.ConfirmDialogFragment.ConfirmCaller;
|
||||||
import com.google.android.apps.mytracks.fragments.DeleteAllTrackDialogFragment;
|
import com.google.android.apps.mytracks.fragments.DeleteAllTrackDialogFragment;
|
||||||
import com.google.android.apps.mytracks.fragments.DeleteOneTrackDialogFragment;
|
import com.google.android.apps.mytracks.fragments.DeleteOneTrackDialogFragment;
|
||||||
import com.google.android.apps.mytracks.fragments.DeleteOneTrackDialogFragment.DeleteOneTrackCaller;
|
import com.google.android.apps.mytracks.fragments.DeleteOneTrackDialogFragment.DeleteOneTrackCaller;
|
||||||
@@ -89,7 +92,8 @@ import java.util.Locale;
|
|||||||
*
|
*
|
||||||
* @author Leif Hendrik Wilden
|
* @author Leif Hendrik Wilden
|
||||||
*/
|
*/
|
||||||
public class TrackListActivity extends FragmentActivity implements DeleteOneTrackCaller {
|
public class TrackListActivity extends FragmentActivity
|
||||||
|
implements ConfirmCaller, DeleteOneTrackCaller {
|
||||||
|
|
||||||
private static final String TAG = TrackListActivity.class.getSimpleName();
|
private static final String TAG = TrackListActivity.class.getSimpleName();
|
||||||
private static final String START_GPS_KEY = "start_gps_key";
|
private static final String START_GPS_KEY = "start_gps_key";
|
||||||
@@ -195,15 +199,12 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac
|
|||||||
return handleContextItem(itemId, id);
|
return handleContextItem(itemId, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void onPrepare(Menu menu, int position, long id) {
|
||||||
public boolean canEdit(int position, long id) {
|
|
||||||
Track track = myTracksProviderUtils.getTrack(id);
|
Track track = myTracksProviderUtils.getTrack(id);
|
||||||
return !track.isSharedWithMe();
|
menu.findItem(R.id.list_context_menu_share_drive).setVisible(!track.isSharedWithMe());
|
||||||
}
|
menu.findItem(R.id.list_context_menu_show_on_map).setVisible(false);
|
||||||
|
menu.findItem(R.id.list_context_menu_edit).setVisible(!track.isSharedWithMe());
|
||||||
@Override
|
menu.findItem(R.id.list_context_menu_delete).setVisible(true);
|
||||||
public boolean canDelete(int position, long id) {
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -401,10 +402,10 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac
|
|||||||
TrackListActivity.this, cursor.getDouble(totalDistanceIndex), metricUnits);
|
TrackListActivity.this, cursor.getDouble(totalDistanceIndex), metricUnits);
|
||||||
long startTime = cursor.getLong(startTimeIndex);
|
long startTime = cursor.getLong(startTimeIndex);
|
||||||
String description = cursor.getString(descriptionIndex);
|
String description = cursor.getString(descriptionIndex);
|
||||||
|
|
||||||
ListItemUtils.setListItem(TrackListActivity.this, view, isRecording, recordingTrackPaused,
|
ListItemUtils.setListItem(TrackListActivity.this, view, isRecording, recordingTrackPaused,
|
||||||
iconId, R.string.icon_track, name, category, totalTime,
|
iconId, R.string.icon_track, name, category, totalTime, totalDistance, startTime,
|
||||||
totalDistance, startTime, description);
|
description);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
listView.setAdapter(sectionResourceCursorAdapter);
|
listView.setAdapter(sectionResourceCursorAdapter);
|
||||||
@@ -607,9 +608,7 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac
|
|||||||
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
|
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
|
||||||
super.onCreateContextMenu(menu, v, menuInfo);
|
super.onCreateContextMenu(menu, v, menuInfo);
|
||||||
getMenuInflater().inflate(R.menu.list_context_menu, menu);
|
getMenuInflater().inflate(R.menu.list_context_menu, menu);
|
||||||
long trackId = ((AdapterContextMenuInfo) menuInfo).id;
|
contextualActionModeCallback.onPrepare(menu, 0, ((AdapterContextMenuInfo) menuInfo).id);
|
||||||
Track track = myTracksProviderUtils.getTrack(trackId);
|
|
||||||
menu.findItem(R.id.list_context_menu_edit).setVisible(!track.isSharedWithMe());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -630,6 +629,17 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac
|
|||||||
return super.onKeyUp(keyCode, event);
|
return super.onKeyUp(keyCode, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onConfirmed(int confirmId, long trackId) {
|
||||||
|
switch (confirmId) {
|
||||||
|
case R.string.confirm_share_drive_key:
|
||||||
|
AddPeopleDialogFragment.newInstance(trackId)
|
||||||
|
.show(getSupportFragmentManager(), AddPeopleDialogFragment.ADD_PEOPLE_DIALOG_TAG);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TrackRecordingServiceConnection getTrackRecordingServiceConnection() {
|
public TrackRecordingServiceConnection getTrackRecordingServiceConnection() {
|
||||||
return trackRecordingServiceConnection;
|
return trackRecordingServiceConnection;
|
||||||
@@ -763,6 +773,12 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac
|
|||||||
private boolean handleContextItem(int itemId, long trackId) {
|
private boolean handleContextItem(int itemId, long trackId) {
|
||||||
Intent intent;
|
Intent intent;
|
||||||
switch (itemId) {
|
switch (itemId) {
|
||||||
|
case R.id.list_context_menu_share_drive:
|
||||||
|
ConfirmDialogFragment.newInstance(R.string.confirm_share_drive_key,
|
||||||
|
PreferencesUtils.CONFIRM_SHARE_DRIVE_DEFAULT,
|
||||||
|
getString(R.string.share_track_drive_confirm_message), trackId)
|
||||||
|
.show(getSupportFragmentManager(), ConfirmDialogFragment.CONFIRM_DIALOG_TAG);
|
||||||
|
return true;
|
||||||
case R.id.list_context_menu_show_on_map:
|
case R.id.list_context_menu_show_on_map:
|
||||||
intent = IntentUtils.newIntent(this, TrackDetailActivity.class)
|
intent = IntentUtils.newIntent(this, TrackDetailActivity.class)
|
||||||
.putExtra(TrackDetailActivity.EXTRA_TRACK_ID, trackId);
|
.putExtra(TrackDetailActivity.EXTRA_TRACK_ID, trackId);
|
||||||
|
|||||||
@@ -16,10 +16,10 @@
|
|||||||
|
|
||||||
package com.google.android.apps.mytracks.fragments;
|
package com.google.android.apps.mytracks.fragments;
|
||||||
|
|
||||||
import com.google.android.apps.mytracks.TrackDetailActivity;
|
|
||||||
import com.google.android.apps.mytracks.util.PreferencesUtils;
|
import com.google.android.apps.mytracks.util.PreferencesUtils;
|
||||||
import com.google.android.maps.mytracks.R;
|
import com.google.android.maps.mytracks.R;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
@@ -36,35 +36,62 @@ import android.widget.TextView;
|
|||||||
*/
|
*/
|
||||||
public class ConfirmDialogFragment extends DialogFragment {
|
public class ConfirmDialogFragment extends DialogFragment {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface for caller of this dialog fragment.
|
||||||
|
*
|
||||||
|
* @author Jimmy Shih
|
||||||
|
*/
|
||||||
|
public interface ConfirmCaller {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when confirmed.
|
||||||
|
*/
|
||||||
|
public void onConfirmed(int confirmId, long trackId);
|
||||||
|
}
|
||||||
|
|
||||||
public static final String CONFIRM_DIALOG_TAG = "confirmDialog";
|
public static final String CONFIRM_DIALOG_TAG = "confirmDialog";
|
||||||
|
|
||||||
private static final String KEY_CONFIRM_ID = "confirmId";
|
private static final String KEY_CONFIRM_ID = "confirmId";
|
||||||
private static final String KEY_DEFAULT_VALUE = "defaultValue";
|
private static final String KEY_DEFAULT_VALUE = "defaultValue";
|
||||||
private static final String KEY_MESSAGE = "message";
|
private static final String KEY_MESSAGE = "message";
|
||||||
|
private static final String KEY_TRACK_ID = "trackId";
|
||||||
|
|
||||||
private CheckBox checkBox;
|
private CheckBox checkBox;
|
||||||
|
|
||||||
public static ConfirmDialogFragment newInstance(
|
public static ConfirmDialogFragment newInstance(
|
||||||
int confirmId, boolean defaultValue, CharSequence message) {
|
int confirmId, boolean defaultValue, CharSequence message, long trackId) {
|
||||||
Bundle bundle = new Bundle();
|
Bundle bundle = new Bundle();
|
||||||
bundle.putInt(KEY_CONFIRM_ID, confirmId);
|
bundle.putInt(KEY_CONFIRM_ID, confirmId);
|
||||||
bundle.putBoolean(KEY_DEFAULT_VALUE, defaultValue);
|
bundle.putBoolean(KEY_DEFAULT_VALUE, defaultValue);
|
||||||
bundle.putCharSequence(KEY_MESSAGE, message);
|
bundle.putCharSequence(KEY_MESSAGE, message);
|
||||||
|
bundle.putLong(KEY_TRACK_ID, trackId);
|
||||||
|
|
||||||
ConfirmDialogFragment confirmDialogFragment = new ConfirmDialogFragment();
|
ConfirmDialogFragment confirmDialogFragment = new ConfirmDialogFragment();
|
||||||
confirmDialogFragment.setArguments(bundle);
|
confirmDialogFragment.setArguments(bundle);
|
||||||
return confirmDialogFragment;
|
return confirmDialogFragment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ConfirmCaller caller;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAttach(Activity activity) {
|
||||||
|
super.onAttach(activity);
|
||||||
|
try {
|
||||||
|
caller = (ConfirmCaller) activity;
|
||||||
|
} catch (ClassCastException e) {
|
||||||
|
throw new ClassCastException(activity.toString() + " must implement ConfirmCaller");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
int confirmId = getArguments().getInt(KEY_CONFIRM_ID);
|
int confirmId = getArguments().getInt(KEY_CONFIRM_ID);
|
||||||
boolean defaultValue = getArguments().getBoolean(KEY_DEFAULT_VALUE);
|
boolean defaultValue = getArguments().getBoolean(KEY_DEFAULT_VALUE);
|
||||||
if (!PreferencesUtils.getBoolean(getActivity(), confirmId, defaultValue)) {
|
if (!PreferencesUtils.getBoolean(getActivity(), confirmId, defaultValue)) {
|
||||||
|
long trackId = getArguments().getLong(KEY_TRACK_ID);
|
||||||
dismiss();
|
dismiss();
|
||||||
TrackDetailActivity trackDetailActivity = (TrackDetailActivity) getActivity();
|
caller.onConfirmed(confirmId, trackId);
|
||||||
trackDetailActivity.onConfirmDialogDone(confirmId);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,9 +107,9 @@ public class ConfirmDialogFragment extends DialogFragment {
|
|||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
int confirmId = getArguments().getInt(KEY_CONFIRM_ID);
|
int confirmId = getArguments().getInt(KEY_CONFIRM_ID);
|
||||||
|
long trackId = getArguments().getLong(KEY_TRACK_ID);
|
||||||
PreferencesUtils.setBoolean(getActivity(), confirmId, !checkBox.isChecked());
|
PreferencesUtils.setBoolean(getActivity(), confirmId, !checkBox.isChecked());
|
||||||
TrackDetailActivity trackDetailActivity = (TrackDetailActivity) getActivity();
|
caller.onConfirmed(confirmId, trackId);
|
||||||
trackDetailActivity.onConfirmDialogDone(confirmId);
|
|
||||||
}
|
}
|
||||||
}).setTitle(R.string.generic_confirm_title).setView(view).create();
|
}).setTitle(R.string.generic_confirm_title).setView(view).create();
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -37,9 +37,6 @@ import android.support.v4.app.FragmentActivity;
|
|||||||
*/
|
*/
|
||||||
public class DeleteOneTrackDialogFragment extends DialogFragment {
|
public class DeleteOneTrackDialogFragment extends DialogFragment {
|
||||||
|
|
||||||
public static final String DELETE_ONE_TRACK_DIALOG_TAG = "deleteOneTrackDialog";
|
|
||||||
private static final String KEY_TRACK_ID = "trackId";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface for caller of this dialog fragment.
|
* Interface for caller of this dialog fragment.
|
||||||
*
|
*
|
||||||
@@ -57,6 +54,9 @@ public class DeleteOneTrackDialogFragment extends DialogFragment {
|
|||||||
*/
|
*/
|
||||||
public void onTrackDeleted();
|
public void onTrackDeleted();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static final String DELETE_ONE_TRACK_DIALOG_TAG = "deleteOneTrackDialog";
|
||||||
|
private static final String KEY_TRACK_ID = "trackId";
|
||||||
|
|
||||||
public static DeleteOneTrackDialogFragment newInstance(long trackId) {
|
public static DeleteOneTrackDialogFragment newInstance(long trackId) {
|
||||||
Bundle bundle = new Bundle();
|
Bundle bundle = new Bundle();
|
||||||
|
|||||||
@@ -59,32 +59,33 @@ public class Api11Adapter extends Api10Adapter {
|
|||||||
final ContextualActionModeCallback contextualActionModeCallback) {
|
final ContextualActionModeCallback contextualActionModeCallback) {
|
||||||
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
|
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
|
||||||
ActionMode actionMode;
|
ActionMode actionMode;
|
||||||
@Override
|
|
||||||
|
@Override
|
||||||
public boolean onItemLongClick(
|
public boolean onItemLongClick(
|
||||||
AdapterView<?> parent, View view, final int position, final long id) {
|
AdapterView<?> parent, View view, final int position, final long id) {
|
||||||
if (actionMode != null) {
|
if (actionMode != null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
actionMode = activity.startActionMode(new ActionMode.Callback() {
|
actionMode = activity.startActionMode(new ActionMode.Callback() {
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
|
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
|
||||||
mode.getMenuInflater().inflate(R.menu.list_context_menu, menu);
|
mode.getMenuInflater().inflate(R.menu.list_context_menu, menu);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@Override
|
|
||||||
|
@Override
|
||||||
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
|
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
|
||||||
menu.findItem(R.id.list_context_menu_edit)
|
contextualActionModeCallback.onPrepare(menu, position, id);
|
||||||
.setVisible(contextualActionModeCallback.canEdit(position, id));
|
|
||||||
menu.findItem(R.id.list_context_menu_delete)
|
|
||||||
.setVisible(contextualActionModeCallback.canDelete(position, id));
|
|
||||||
// Return true to indicate change
|
// Return true to indicate change
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@Override
|
|
||||||
|
@Override
|
||||||
public void onDestroyActionMode(ActionMode mode) {
|
public void onDestroyActionMode(ActionMode mode) {
|
||||||
actionMode = null;
|
actionMode = null;
|
||||||
}
|
}
|
||||||
@Override
|
|
||||||
|
@Override
|
||||||
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
|
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
|
||||||
mode.finish();
|
mode.finish();
|
||||||
return contextualActionModeCallback.onClick(item.getItemId(), position, id);
|
return contextualActionModeCallback.onClick(item.getItemId(), position, id);
|
||||||
|
|||||||
Reference in New Issue
Block a user