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.
|
||||
-->
|
||||
<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
|
||||
android:icon="@drawable/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">
|
||||
</item>
|
||||
<item
|
||||
android:icon="@drawable/menu_share"
|
||||
android:icon="@drawable/menu_share_drive"
|
||||
android:id="@+id/track_detail_share_drive"
|
||||
android:orderInCategory="4"
|
||||
android:showAsAction="ifRoom"
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package com.google.android.apps.mytracks;
|
||||
|
||||
import android.view.Menu;
|
||||
|
||||
/**
|
||||
* 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);
|
||||
|
||||
/**
|
||||
* 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 id the id of the selected row
|
||||
* @param menu the menu
|
||||
* @param position the position of the selected item
|
||||
* @param id the id of the selected item
|
||||
*/
|
||||
public boolean canEdit(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);
|
||||
public void onPrepare(Menu menu, int position, long id);
|
||||
}
|
||||
@@ -73,16 +73,12 @@ public class MarkerListActivity extends AbstractMyTracksActivity implements Dele
|
||||
return handleContextItem(itemId, id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canEdit(int position, long id) {
|
||||
public void onPrepare(Menu menu, int position, long id) {
|
||||
Track track = myTracksProviderUtils.getTrack(trackId);
|
||||
return !track.isSharedWithMe();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDelete(int poistion, long id) {
|
||||
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());
|
||||
menu.findItem(R.id.list_context_menu_delete).setVisible(!track.isSharedWithMe());
|
||||
}
|
||||
};
|
||||
|
||||
@@ -169,7 +165,7 @@ public class MarkerListActivity extends AbstractMyTracksActivity implements Dele
|
||||
int iconId = statistics ? R.drawable.yellow_pushpin : R.drawable.blue_pushpin;
|
||||
String category = statistics ? null : cursor.getString(categoryIndex);
|
||||
String description = statistics ? null : cursor.getString(descriptionIndex);
|
||||
|
||||
|
||||
ListItemUtils.setListItem(MarkerListActivity.this, view, false, true, iconId,
|
||||
R.string.icon_marker, cursor.getString(nameIndex), category, null, null,
|
||||
cursor.getLong(timeIndex), description);
|
||||
@@ -259,9 +255,7 @@ public class MarkerListActivity extends AbstractMyTracksActivity implements Dele
|
||||
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
|
||||
super.onCreateContextMenu(menu, v, menuInfo);
|
||||
getMenuInflater().inflate(R.menu.list_context_menu, menu);
|
||||
Track track = myTracksProviderUtils.getTrack(trackId);
|
||||
menu.findItem(R.id.list_context_menu_edit).setVisible(!track.isSharedWithMe());
|
||||
menu.findItem(R.id.list_context_menu_delete).setVisible(!track.isSharedWithMe());
|
||||
contextualActionModeCallback.onPrepare(menu, 0, 0);
|
||||
}
|
||||
|
||||
@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.Waypoint;
|
||||
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.DeleteOneMarkerCaller;
|
||||
import com.google.android.apps.mytracks.fragments.DeleteOneTrackDialogFragment;
|
||||
@@ -75,7 +78,7 @@ import java.util.SortedSet;
|
||||
* @author Rodrigo Damazio
|
||||
*/
|
||||
public class SearchListActivity extends AbstractMyTracksActivity
|
||||
implements DeleteOneTrackCaller, DeleteOneMarkerCaller {
|
||||
implements ConfirmCaller, DeleteOneTrackCaller, DeleteOneMarkerCaller {
|
||||
|
||||
private static final String TAG = SearchListActivity.class.getSimpleName();
|
||||
|
||||
@@ -131,25 +134,17 @@ public class SearchListActivity extends AbstractMyTracksActivity
|
||||
return handleContextItem(itemId, position);
|
||||
}
|
||||
|
||||
@Override
|
||||
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) {
|
||||
public void onPrepare(Menu menu, int position, long id) {
|
||||
Map<String, Object> item = arrayAdapter.getItem(position);
|
||||
Long trackId = (Long) item.get(TRACK_ID_FIELD);
|
||||
Long markerId = (Long) item.get(MARKER_ID_FIELD);
|
||||
if (markerId != null) {
|
||||
Track track = myTracksProviderUtils.getTrack(trackId);
|
||||
return !track.isSharedWithMe();
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
Track track = myTracksProviderUtils.getTrack(trackId);
|
||||
menu.findItem(R.id.list_context_menu_share_drive)
|
||||
.setVisible(markerId == null && !track.isSharedWithMe());
|
||||
menu.findItem(R.id.list_context_menu_show_on_map).setVisible(markerId != null);
|
||||
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);
|
||||
getMenuInflater().inflate(R.menu.list_context_menu, menu);
|
||||
|
||||
Map<String, Object> item = arrayAdapter.getItem(((AdapterContextMenuInfo) menuInfo).position);
|
||||
Long trackId = (Long) item.get(TRACK_ID_FIELD);
|
||||
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());
|
||||
}
|
||||
int position = ((AdapterContextMenuInfo) menuInfo).position;
|
||||
contextualActionModeCallback.onPrepare(menu, position, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -337,6 +326,12 @@ public class SearchListActivity extends AbstractMyTracksActivity
|
||||
Long markerId = (Long) item.get(MARKER_ID_FIELD);
|
||||
Intent intent;
|
||||
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:
|
||||
if (markerId != null) {
|
||||
intent = IntentUtils.newIntent(this, TrackDetailActivity.class)
|
||||
@@ -509,6 +504,17 @@ public class SearchListActivity extends AbstractMyTracksActivity
|
||||
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
|
||||
public TrackRecordingServiceConnection getTrackRecordingServiceConnection() {
|
||||
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.ChooseUploadServiceDialogFragment;
|
||||
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.DeleteOneTrackCaller;
|
||||
import com.google.android.apps.mytracks.fragments.FrequencyDialogFragment;
|
||||
@@ -70,7 +71,7 @@ import java.util.Locale;
|
||||
* @author Leif Hendrik Wilden
|
||||
* @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_MARKER_ID = "marker_id";
|
||||
@@ -322,34 +323,6 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
|
||||
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
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
Intent intent;
|
||||
@@ -364,7 +337,7 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
|
||||
if (isEarthInstalled()) {
|
||||
ConfirmDialogFragment.newInstance(R.string.confirm_play_earth_key,
|
||||
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);
|
||||
} else {
|
||||
new InstallEarthDialogFragment().show(
|
||||
@@ -374,13 +347,13 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
|
||||
case R.id.track_detail_share:
|
||||
ConfirmDialogFragment.newInstance(R.string.confirm_share_map_key,
|
||||
PreferencesUtils.CONFIRM_SHARE_MAP_DEFAULT, StringUtils.getHtml(
|
||||
this, R.string.share_track_map_confirm_message, R.string.maps_public_unlisted_url))
|
||||
.show(getSupportFragmentManager(), ConfirmDialogFragment.CONFIRM_DIALOG_TAG);
|
||||
this, R.string.share_track_map_confirm_message, R.string.maps_public_unlisted_url),
|
||||
trackId).show(getSupportFragmentManager(), ConfirmDialogFragment.CONFIRM_DIALOG_TAG);
|
||||
return true;
|
||||
case R.id.track_detail_share_drive:
|
||||
ConfirmDialogFragment.newInstance(R.string.confirm_share_drive_key,
|
||||
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);
|
||||
return true;
|
||||
case R.id.track_detail_markers:
|
||||
@@ -455,6 +428,30 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
|
||||
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
|
||||
public TrackRecordingServiceConnection getTrackRecordingServiceConnection() {
|
||||
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.TracksColumns;
|
||||
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.DeleteOneTrackDialogFragment;
|
||||
import com.google.android.apps.mytracks.fragments.DeleteOneTrackDialogFragment.DeleteOneTrackCaller;
|
||||
@@ -89,7 +92,8 @@ import java.util.Locale;
|
||||
*
|
||||
* @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 START_GPS_KEY = "start_gps_key";
|
||||
@@ -195,15 +199,12 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac
|
||||
return handleContextItem(itemId, id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canEdit(int position, long id) {
|
||||
public void onPrepare(Menu menu, int position, long id) {
|
||||
Track track = myTracksProviderUtils.getTrack(id);
|
||||
return !track.isSharedWithMe();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDelete(int position, long id) {
|
||||
return true;
|
||||
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());
|
||||
menu.findItem(R.id.list_context_menu_delete).setVisible(true);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -401,10 +402,10 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac
|
||||
TrackListActivity.this, cursor.getDouble(totalDistanceIndex), metricUnits);
|
||||
long startTime = cursor.getLong(startTimeIndex);
|
||||
String description = cursor.getString(descriptionIndex);
|
||||
|
||||
|
||||
ListItemUtils.setListItem(TrackListActivity.this, view, isRecording, recordingTrackPaused,
|
||||
iconId, R.string.icon_track, name, category, totalTime,
|
||||
totalDistance, startTime, description);
|
||||
iconId, R.string.icon_track, name, category, totalTime, totalDistance, startTime,
|
||||
description);
|
||||
}
|
||||
};
|
||||
listView.setAdapter(sectionResourceCursorAdapter);
|
||||
@@ -607,9 +608,7 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac
|
||||
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
|
||||
super.onCreateContextMenu(menu, v, menuInfo);
|
||||
getMenuInflater().inflate(R.menu.list_context_menu, menu);
|
||||
long trackId = ((AdapterContextMenuInfo) menuInfo).id;
|
||||
Track track = myTracksProviderUtils.getTrack(trackId);
|
||||
menu.findItem(R.id.list_context_menu_edit).setVisible(!track.isSharedWithMe());
|
||||
contextualActionModeCallback.onPrepare(menu, 0, ((AdapterContextMenuInfo) menuInfo).id);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -630,6 +629,17 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac
|
||||
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
|
||||
public TrackRecordingServiceConnection getTrackRecordingServiceConnection() {
|
||||
return trackRecordingServiceConnection;
|
||||
@@ -763,6 +773,12 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac
|
||||
private boolean handleContextItem(int itemId, long trackId) {
|
||||
Intent intent;
|
||||
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:
|
||||
intent = IntentUtils.newIntent(this, TrackDetailActivity.class)
|
||||
.putExtra(TrackDetailActivity.EXTRA_TRACK_ID, trackId);
|
||||
|
||||
@@ -16,10 +16,10 @@
|
||||
|
||||
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.maps.mytracks.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Dialog;
|
||||
import android.content.DialogInterface;
|
||||
@@ -36,35 +36,62 @@ import android.widget.TextView;
|
||||
*/
|
||||
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";
|
||||
|
||||
private static final String KEY_CONFIRM_ID = "confirmId";
|
||||
private static final String KEY_DEFAULT_VALUE = "defaultValue";
|
||||
private static final String KEY_MESSAGE = "message";
|
||||
|
||||
private static final String KEY_TRACK_ID = "trackId";
|
||||
|
||||
private CheckBox checkBox;
|
||||
|
||||
public static ConfirmDialogFragment newInstance(
|
||||
int confirmId, boolean defaultValue, CharSequence message) {
|
||||
int confirmId, boolean defaultValue, CharSequence message, long trackId) {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt(KEY_CONFIRM_ID, confirmId);
|
||||
bundle.putBoolean(KEY_DEFAULT_VALUE, defaultValue);
|
||||
bundle.putCharSequence(KEY_MESSAGE, message);
|
||||
bundle.putLong(KEY_TRACK_ID, trackId);
|
||||
|
||||
ConfirmDialogFragment confirmDialogFragment = new ConfirmDialogFragment();
|
||||
confirmDialogFragment.setArguments(bundle);
|
||||
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
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
int confirmId = getArguments().getInt(KEY_CONFIRM_ID);
|
||||
boolean defaultValue = getArguments().getBoolean(KEY_DEFAULT_VALUE);
|
||||
if (!PreferencesUtils.getBoolean(getActivity(), confirmId, defaultValue)) {
|
||||
long trackId = getArguments().getLong(KEY_TRACK_ID);
|
||||
dismiss();
|
||||
TrackDetailActivity trackDetailActivity = (TrackDetailActivity) getActivity();
|
||||
trackDetailActivity.onConfirmDialogDone(confirmId);
|
||||
caller.onConfirmed(confirmId, trackId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,9 +107,9 @@ public class ConfirmDialogFragment extends DialogFragment {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
int confirmId = getArguments().getInt(KEY_CONFIRM_ID);
|
||||
long trackId = getArguments().getLong(KEY_TRACK_ID);
|
||||
PreferencesUtils.setBoolean(getActivity(), confirmId, !checkBox.isChecked());
|
||||
TrackDetailActivity trackDetailActivity = (TrackDetailActivity) getActivity();
|
||||
trackDetailActivity.onConfirmDialogDone(confirmId);
|
||||
caller.onConfirmed(confirmId, trackId);
|
||||
}
|
||||
}).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 static final String DELETE_ONE_TRACK_DIALOG_TAG = "deleteOneTrackDialog";
|
||||
private static final String KEY_TRACK_ID = "trackId";
|
||||
|
||||
/**
|
||||
* Interface for caller of this dialog fragment.
|
||||
*
|
||||
@@ -57,6 +54,9 @@ public class DeleteOneTrackDialogFragment extends DialogFragment {
|
||||
*/
|
||||
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) {
|
||||
Bundle bundle = new Bundle();
|
||||
|
||||
@@ -59,32 +59,33 @@ public class Api11Adapter extends Api10Adapter {
|
||||
final ContextualActionModeCallback contextualActionModeCallback) {
|
||||
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
|
||||
ActionMode actionMode;
|
||||
@Override
|
||||
|
||||
@Override
|
||||
public boolean onItemLongClick(
|
||||
AdapterView<?> parent, View view, final int position, final long id) {
|
||||
if (actionMode != null) {
|
||||
return false;
|
||||
}
|
||||
actionMode = activity.startActionMode(new ActionMode.Callback() {
|
||||
@Override
|
||||
@Override
|
||||
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
|
||||
mode.getMenuInflater().inflate(R.menu.list_context_menu, menu);
|
||||
return true;
|
||||
}
|
||||
@Override
|
||||
|
||||
@Override
|
||||
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
|
||||
menu.findItem(R.id.list_context_menu_edit)
|
||||
.setVisible(contextualActionModeCallback.canEdit(position, id));
|
||||
menu.findItem(R.id.list_context_menu_delete)
|
||||
.setVisible(contextualActionModeCallback.canDelete(position, id));
|
||||
contextualActionModeCallback.onPrepare(menu, position, id);
|
||||
// Return true to indicate change
|
||||
return true;
|
||||
}
|
||||
@Override
|
||||
|
||||
@Override
|
||||
public void onDestroyActionMode(ActionMode mode) {
|
||||
actionMode = null;
|
||||
}
|
||||
@Override
|
||||
|
||||
@Override
|
||||
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
|
||||
mode.finish();
|
||||
return contextualActionModeCallback.onClick(item.getItemId(), position, id);
|
||||
|
||||
Reference in New Issue
Block a user