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
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index 825da33..ea97c29 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -566,10 +566,43 @@
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<Void, Void, Cursor> {
+ 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) {
Intent intent = new Intent(getActivity(), AddBookmarkPage.class);
Cursor cursor = mAdapter.getItem(position);