From: csagan5 <32685696+csagan5@users.noreply.github.com> Date: Sat, 9 Apr 2022 23:01:55 +0200 Subject: Bookmarks select all menu entry Requires: Restore-BookmarkToolbar-setCurrentFolder.patch License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../menu/bookmark_toolbar_menu_improved.xml | 7 +++++++ .../browser/bookmarks/BookmarkToolbar.java | 18 ++++++++++++++++++ .../android/strings/android_chrome_strings.grd | 3 +++ 3 files changed, 28 insertions(+) diff --git a/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml b/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml --- a/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml +++ b/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml @@ -51,6 +51,13 @@ found in the LICENSE file. android:title="@string/create_new_folder" app:showAsAction="ifRoom" app:iconTint="@color/default_icon_color_secondary_tint_list" /> + void setCurrentFolder(BookmarkId folder) { mCurrentFolder = mBookmarkModel.getBookmarkById(folder); enableImportExportMenu(); + enableSelectAllMenu(); + } + + void enableSelectAllMenu() { + getMenu().findItem(R.id.select_all_menu_id).setVisible(true); } void enableImportExportMenu() { @@ -233,6 +239,17 @@ public class BookmarkToolbar extends SelectableListToolbar mExportBookmarkRunnable.run(); return true; } + if (menuItem.getItemId() == R.id.select_all_menu_id) { + if (mBookmarkModel.isBookmarkModelLoaded()) { + List childs = mBookmarkModel.getChildIds(mCurrentFolder.getId()); + HashSet ids = new HashSet<>(childs.size()); + for (BookmarkId item : childs) { + ids.add(item); + } + mSelectionDelegate.setSelectedItems(ids); + } + return true; + } return assumeNonNull(mMenuIdClickedFunction).apply(menuItem.getItemId()); } @@ -255,6 +272,7 @@ public class BookmarkToolbar extends SelectableListToolbar getMenu().findItem(R.id.import_menu_id).setVisible(mCurrentFolder != null); getMenu().findItem(R.id.export_menu_id).setVisible(mCurrentFolder != null); + getMenu().findItem(R.id.select_all_menu_id).setVisible(mCurrentFolder != null); // SelectableListToolbar will show/hide the entire group. setEditButtonVisible(mEditButtonVisible); diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd @@ -277,6 +277,9 @@ CHAR_LIMIT guidelines: Sites + + Select all + Import --