Files
cromite/build/patches/Bookmarks-select-all-menu-entry.patch

94 lines
4.5 KiB
Diff

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" />
+ <item
+ android:id="@+id/select_all_menu_id"
+ android:icon="@drawable/ic_done_blue"
+ android:title="@string/select_all_bookmarks"
+ android:visible="true"
+ app:showAsAction="ifRoom"
+ app:iconTint="@color/default_icon_color_tint_list" />
<item
android:id="@+id/import_menu_id"
android:icon="@drawable/ic_folder_blue_24dp"
diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java
--- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java
+++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java
@@ -28,6 +28,7 @@ import org.chromium.components.browser_ui.widget.selectable_list.SelectionDelega
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
+import java.util.HashSet;
/**
* Main toolbar of bookmark UI. It is responsible for displaying title and buttons associated with
@@ -197,6 +198,11 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
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<BookmarkId>
mExportBookmarkRunnable.run();
return true;
}
+ if (menuItem.getItemId() == R.id.select_all_menu_id) {
+ if (mBookmarkModel.isBookmarkModelLoaded()) {
+ List<BookmarkId> childs = mBookmarkModel.getChildIds(mCurrentFolder.getId());
+ HashSet<BookmarkId> 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<BookmarkId>
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:
<message name="IDS_NOTIFICATION_CATEGORY_SITES" desc="Label for notifications from websites, within a list of notification categories. [CHAR_LIMIT=32]">
Sites
</message>
+ <message name="IDS_SELECT_ALL_BOOKMARKS" desc="The label for the select all bookmarks button.">
+ Select all
+ </message>
<message name="IDS_IMPORT_BOOKMARKS" desc="The label for the import bookmarks button.">
Import
</message>
--