package org.openintents.filemanager.compatibility; import org.openintents.filemanager.R; import org.openintents.filemanager.bookmarks.BookmarkListAdapter; import org.openintents.filemanager.bookmarks.BookmarksProvider; import android.os.Build.VERSION; import android.os.Build.VERSION_CODES; import android.view.MenuItem; import android.widget.ListView; import android.widget.AdapterView.AdapterContextMenuInfo; public class BookmarkListActionHandler { private BookmarkListActionHandler() { } /** * Offers a centralized bookmark action execution component. * * @param item * The MenuItem selected. * @param list * The list to act upon. * * @param pos The selected item's position. */ public static void handleItemSelection(MenuItem item, ListView list) { // Single selection if (VERSION.SDK_INT < VERSION_CODES.HONEYCOMB || ListViewMethodHelper.listView_getCheckedItemCount(list) == 1) { // Get id of selected bookmark. long id = -1; if(item.getMenuInfo() instanceof AdapterContextMenuInfo) id = list.getAdapter().getItemId(((AdapterContextMenuInfo) item.getMenuInfo()).position); if (VERSION.SDK_INT > VERSION_CODES.HONEYCOMB) id = ListViewMethodHelper.listView_getCheckedItemIds(list)[0]; // Handle selection switch (item.getItemId()) { case R.id.menu_delete: list.getContext().getContentResolver().delete(BookmarksProvider.CONTENT_URI, BookmarksProvider._ID + "=?", new String[] {Long.toString(id)}); break; } // Multiple selection } else { switch (item.getItemId()) { case R.id.menu_delete: long[] ids = ListViewMethodHelper.listView_getCheckedItemIds(list); for(int i=0; i<ids.length; i++){ list.getContext().getContentResolver().delete(BookmarksProvider.CONTENT_URI, BookmarksProvider._ID + "=?", new String[] {Long.toString(ids[i])}); } break; } } ((BookmarkListAdapter)list.getAdapter()).notifyDataSetChanged(); } }