From 1b3c66ed83cb83ba1be775d5f108f698f0d4ee1f Mon Sep 17 00:00:00 2001 From: John Reck Date: Tue, 11 Jan 2011 13:20:32 -0800 Subject: Adds a "open all in tabs" to folder context menu In bookmarks, long pressing on a folder now has an "open all in new tabs" option that opens all of it's child bookmarks (not recursive) in new tabs. Change-Id: Ied4da5cd4f2cf83b58a6f1e618bdfce44b4f4a99 --- src/com/android/browser/BrowserBookmarksPage.java | 35 ++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) (limited to 'src/com/android/browser/BrowserBookmarksPage.java') diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java index 825da3322..ea97c29e7 100644 --- a/src/com/android/browser/BrowserBookmarksPage.java +++ b/src/com/android/browser/BrowserBookmarksPage.java @@ -566,8 +566,41 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte private void openInNewWindow(int position) { if (mCallbacks != null) { - mCallbacks.onOpenInNewWindow(mAdapter.getItem(position)); + Cursor c = mAdapter.getItem(position); + boolean isFolder = c.getInt(BookmarksLoader.COLUMN_INDEX_IS_FOLDER) == 1; + if (isFolder) { + long id = c.getLong(BookmarksLoader.COLUMN_INDEX_ID); + new OpenAllInTabsTask(id).execute(); + } else { + mCallbacks.onOpenInNewWindow(c); + } + } + } + + class OpenAllInTabsTask extends AsyncTask { + long mFolderId; + public OpenAllInTabsTask(long id) { + mFolderId = id; + } + + @Override + protected Cursor doInBackground(Void... params) { + Context c = getActivity(); + if (c == null) return null; + return c.getContentResolver().query(BookmarkUtils.getBookmarksUri(c), + BookmarksLoader.PROJECTION, BrowserContract.Bookmarks.PARENT + "=?", + new String[] { Long.toString(mFolderId) }, null); } + + @Override + protected void onPostExecute(Cursor result) { + if (mCallbacks != null) { + while (result.moveToNext()) { + mCallbacks.onOpenInNewWindow(result); + } + } + } + } private void editBookmark(int position) { -- cgit v1.2.3