94 lines
4.5 KiB
Diff
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>
|
|
--
|