]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/commitdiff
Add bookmark move to top and bottom options. https://redmine.stoutner.com/issues...
authorSoren Stoutner <soren@stoutner.com>
Mon, 21 Oct 2024 22:16:14 +0000 (15:16 -0700)
committerSoren Stoutner <soren@stoutner.com>
Mon, 21 Oct 2024 22:16:14 +0000 (15:16 -0700)
140 files changed:
app/build.gradle
app/src/alt/res/drawable/privacy_browser_foreground.xml
app/src/alt/res/drawable/privacy_browser_monochrome.xml
app/src/main/assets/de/about_licenses.html
app/src/main/assets/en/about_licenses.html
app/src/main/assets/es/about_licenses.html
app/src/main/assets/fr/about_licenses.html
app/src/main/assets/it/about_licenses.html
app/src/main/assets/pt-rBR/about_licenses.html
app/src/main/assets/ru/about_licenses.html
app/src/main/assets/shared_images/arrow_downward_rounded_fill0_weight400_grade0_24px.svg [new file with mode: 0644]
app/src/main/assets/shared_images/arrow_upward_rounded_fill0_weight400_grade0_24px.svg [new file with mode: 0644]
app/src/main/assets/shared_images/bookmark_rounded_fill0_weight400_grade0_24px.svg
app/src/main/assets/shared_images/vertical_align_bottom.svg [deleted file]
app/src/main/assets/shared_images/vertical_align_bottom_rounded_fill0_weight400_grade0_24px.svg [new file with mode: 0644]
app/src/main/assets/shared_images/vertical_align_top.svg [deleted file]
app/src/main/assets/shared_images/vertical_align_top_rounded_fill0_weight400_grade0_24px.svg [new file with mode: 0644]
app/src/main/assets/tr/about_licenses.html
app/src/main/assets/zh-rCN/about_licenses.html
app/src/main/java/com/stoutner/privacybrowser/activities/BookmarksActivity.kt
app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.kt
app/src/main/java/com/stoutner/privacybrowser/helpers/BookmarksDatabaseHelper.kt
app/src/main/res/drawable/about_blue.xml
app/src/main/res/drawable/add.xml
app/src/main/res/drawable/allow_screenshots_disabled.xml
app/src/main/res/drawable/allow_screenshots_enabled.xml
app/src/main/res/drawable/app_bar_disabled.xml
app/src/main/res/drawable/app_bar_enabled.xml
app/src/main/res/drawable/app_bar_ghosted.xml
app/src/main/res/drawable/app_theme.xml
app/src/main/res/drawable/back.xml
app/src/main/res/drawable/block_ads_disabled.xml
app/src/main/res/drawable/block_ads_enabled.xml
app/src/main/res/drawable/block_all_third_party_requests_disabled.xml
app/src/main/res/drawable/block_all_third_party_requests_enabled.xml
app/src/main/res/drawable/block_tracking_disabled.xml
app/src/main/res/drawable/block_tracking_enabled.xml
app/src/main/res/drawable/bottom_app_bar_disabled.xml
app/src/main/res/drawable/bottom_app_bar_enabled.xml
app/src/main/res/drawable/clear_cache_disabled.xml
app/src/main/res/drawable/clear_cache_enabled.xml
app/src/main/res/drawable/clear_cookies_disabled.xml
app/src/main/res/drawable/clear_cookies_enabled.xml
app/src/main/res/drawable/clear_dom_storage_disabled.xml
app/src/main/res/drawable/clear_dom_storage_enabled.xml
app/src/main/res/drawable/clear_everything_disabled.xml
app/src/main/res/drawable/clear_everything_enabled.xml
app/src/main/res/drawable/clear_logcat_disabled.xml
app/src/main/res/drawable/clear_logcat_enabled.xml
app/src/main/res/drawable/close.xml
app/src/main/res/drawable/close_blue.xml
app/src/main/res/drawable/cookies_disabled.xml
app/src/main/res/drawable/cookies_enabled.xml
app/src/main/res/drawable/copy.xml
app/src/main/res/drawable/create_bookmark.xml
app/src/main/res/drawable/create_folder.xml
app/src/main/res/drawable/custom_user_agent_enabled.xml
app/src/main/res/drawable/custom_user_agent_ghosted.xml
app/src/main/res/drawable/delete.xml
app/src/main/res/drawable/dom_storage_disabled.xml
app/src/main/res/drawable/dom_storage_enabled.xml
app/src/main/res/drawable/dom_storage_ghosted.xml
app/src/main/res/drawable/domain_settings_url_background.xml
app/src/main/res/drawable/domains.xml
app/src/main/res/drawable/download.xml
app/src/main/res/drawable/download_with_external_app_disabled.xml
app/src/main/res/drawable/download_with_external_app_enabled.xml
app/src/main/res/drawable/edit.xml
app/src/main/res/drawable/folder_dark_blue.xml
app/src/main/res/drawable/folder_gray.xml
app/src/main/res/drawable/font_size.xml
app/src/main/res/drawable/forward.xml
app/src/main/res/drawable/full_screen_disabled.xml
app/src/main/res/drawable/full_screen_enabled.xml
app/src/main/res/drawable/guide.xml
app/src/main/res/drawable/history.xml
app/src/main/res/drawable/home.xml
app/src/main/res/drawable/image.xml
app/src/main/res/drawable/images_disabled.xml
app/src/main/res/drawable/images_enabled.xml
app/src/main/res/drawable/import_export.xml
app/src/main/res/drawable/incognito_mode_disabled.xml
app/src/main/res/drawable/incognito_mode_enabled.xml
app/src/main/res/drawable/javascript_enabled.xml
app/src/main/res/drawable/list_selector.xml
app/src/main/res/drawable/lock.xml
app/src/main/res/drawable/menu.xml
app/src/main/res/drawable/modify_url_disabled.xml
app/src/main/res/drawable/modify_url_enabled.xml
app/src/main/res/drawable/move_down_disabled.xml
app/src/main/res/drawable/move_down_enabled.xml
app/src/main/res/drawable/move_to_bottom_disabled.xml [new file with mode: 0644]
app/src/main/res/drawable/move_to_bottom_enabled.xml [new file with mode: 0644]
app/src/main/res/drawable/move_to_folder_blue.xml
app/src/main/res/drawable/move_to_top_disabled.xml [new file with mode: 0644]
app/src/main/res/drawable/move_to_top_enabled.xml [new file with mode: 0644]
app/src/main/res/drawable/move_up_disabled.xml
app/src/main/res/drawable/move_up_enabled.xml
app/src/main/res/drawable/next.xml
app/src/main/res/drawable/pin.xml
app/src/main/res/drawable/pin_selected.xml
app/src/main/res/drawable/previous.xml
app/src/main/res/drawable/privacy_browser_foreground.xml
app/src/main/res/drawable/privacy_browser_monochrome.xml
app/src/main/res/drawable/privacy_mode.xml
app/src/main/res/drawable/proxy_disabled.xml
app/src/main/res/drawable/proxy_enabled.xml
app/src/main/res/drawable/proxy_ghosted.xml
app/src/main/res/drawable/refresh_disabled.xml
app/src/main/res/drawable/refresh_enabled.xml
app/src/main/res/drawable/save.xml
app/src/main/res/drawable/save_text.xml
app/src/main/res/drawable/search_custom_enabled.xml
app/src/main/res/drawable/search_custom_ghosted.xml
app/src/main/res/drawable/select_all.xml
app/src/main/res/drawable/settings.xml
app/src/main/res/drawable/share.xml
app/src/main/res/drawable/social_media_disabled.xml
app/src/main/res/drawable/social_media_enabled.xml
app/src/main/res/drawable/social_media_ghosted.xml
app/src/main/res/drawable/sort.xml
app/src/main/res/drawable/sort_selected.xml
app/src/main/res/drawable/ssl_certificate.xml
app/src/main/res/drawable/tab_disabled.xml
app/src/main/res/drawable/tab_enabled.xml
app/src/main/res/drawable/user_agent.xml
app/src/main/res/drawable/warning.xml
app/src/main/res/drawable/webview_dark_theme.xml
app/src/main/res/drawable/webview_devtools.xml
app/src/main/res/drawable/webview_light_theme.xml
app/src/main/res/drawable/webview_theme_ghosted.xml
app/src/main/res/drawable/wide_viewport_disabled.xml
app/src/main/res/drawable/wide_viewport_enabled.xml
app/src/main/res/menu/bookmarks_context_menu.xml
app/src/main/res/menu/bookmarks_options_menu.xml
app/src/main/res/menu/webview_navigation_menu_bottom_appbar.xml
app/src/main/res/menu/webview_navigation_menu_top_appbar.xml
app/src/main/res/values-de/strings.xml
app/src/main/res/values/strings.xml
build.gradle

index b81126cb59c51ebb248a86c17ee847616c9ee7c3..36116ccf184d33ed6e2e0ff6f3bdf5726ffe64df 100644 (file)
@@ -14,7 +14,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>.
+ * along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>.
  */
 
 plugins {
@@ -82,7 +82,7 @@ android {
 
 dependencies {
     // Include the following AndroidX libraries.
-    implementation "androidx.activity:activity-ktx:1.9.2"
+    implementation "androidx.activity:activity-ktx:1.9.3"
     implementation 'androidx.arch.core:core-common:2.2.0'
     implementation 'androidx.arch.core:core-runtime:2.2.0'
     implementation 'androidx.appcompat:appcompat:1.7.0'
@@ -94,11 +94,11 @@ dependencies {
     implementation 'androidx.preference:preference-ktx:1.2.1'
     implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
     implementation 'androidx.viewpager:viewpager:1.0.0'
-    implementation 'androidx.webkit:webkit:1.12.0'
+    implementation 'androidx.webkit:webkit:1.12.1'
 
     // Include the Kotlin standard library.  This should be the same version number listed in project build.gradle.
     implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.9.20'
 
     // Include the Google material library.
-    implementation 'com.google.android.material:material:1.13.0-alpha06'
+    implementation 'com.google.android.material:material:1.13.0-alpha07'
 }
index 517946b4a4e764436ca18ac6658738aaa56cba9c..31e5666c64110caf04d16f5f98a217bd96ceedd6 100644 (file)
@@ -1,9 +1,9 @@
 <!--
   Copyright 2016-2017,2021-2023 Soren Stoutner <soren@stoutner.com>.
 
-  This file is derived from `security` and `language`, which are part of the Android Material icon set.  They are released under the Apache License 2.0.
+  This file is derived from `security` and `language`, which are part of the Android Material icon set <https://fonts.google.com/icons>.  They are released under the Apache License 2.0.
 
-  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
+  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
 
   Privacy Browser Android is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index c5b48ac208acebd8d31260bd6631a28930537ea6..b98da94fe7db90749964684852afb20b61143275 100644 (file)
@@ -1,9 +1,9 @@
 <!--
   Copyright 2016-2017,2021-2023 Soren Stoutner <soren@stoutner.com>.
 
-  This file is derived from `security` and `language`, which are part of the Android Material icon set.  They are released under the Apache License 2.0.
+  This file is derived from `security` and `language`, which are part of the Android Material icon set <https://fonts.google.com/icons>.  They are released under the Apache License 2.0.
 
-  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
+  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
 
   Privacy Browser Android is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 0eca2bfc789be724c47b5ae0dbe002c1b22e0762..e35273d2d7ec6f17397ec9b8cd46583614faf54b 100644 (file)
@@ -18,7 +18,8 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
+
 <html lang="de">
     <head>
         <meta charset="UTF-8">
         <p><svg class="icon"><use href="../shared_images/add.svg#icon"/></svg> add.</p>
         <p><svg class="icon"><use href="../shared_images/aod_tablet_rounded_grade200.svg#icon"/></svg> aod_tablet_rounded_grade200.</p>
         <p><svg class="icon"><use href="../shared_images/arrow_back.svg#icon"/></svg> arrow_back.</p>
+        <p><svg class="icon"><use href="../shared_images/arrow_downward_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> arrow_<wbr>downward_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/arrow_forward.svg#icon"/></svg> arrow_forward.</p>
+        <p><svg class="icon"><use href="../shared_images/arrow_upward_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> arrow_<wbr>upward_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/bookmark_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> bookmark_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/bookmarks.svg#icon"/></svg> bookmarks.</p>
         <p><svg class="icon"><use href="../shared_images/bug_report.svg#icon"/></svg> bug_report.</p>
         <p><svg class="icon"><use href="../shared_images/tab.svg#icon"/></svg> tab.</p>
         <p><svg class="icon"><use href="../shared_images/text_fields.svg#icon"/></svg> text_fields.</p>
         <p><svg class="icon"><use href="../shared_images/thumbs_up_down.svg#icon"/></svg> thumbs_up_down.</p>
-        <p><svg class="icon"><use href="../shared_images/vertical_align_bottom.svg#icon"/></svg> vertical_align_bottom.</p>
-        <p><svg class="icon"><use href="../shared_images/vertical_align_top.svg#icon"/></svg> vertical_align_top.</p>
+        <p><svg class="icon"><use href="../shared_images/vertical_align_bottom_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg>
+            vertical_<wbr>align_<wbr>bottom_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
+        <p><svg class="icon"><use href="../shared_images/vertical_align_top_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg>
+            vertical_<wbr>align_<wbr>top_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/visibility_off.svg#icon"/></svg> visibility_off.</p>
         <p><svg class="icon"><use href="../shared_images/vpn_key.svg#icon"/></svg> vpn_key.</p>
         <p><svg class="icon"><use href="../shared_images/vpn_lock.svg#icon"/></svg> vpn_lock.</p>
index 36a2c057997dce625e2cfb7354ec7a2e6358d7f0..65bfb2888800f81d5db5a564a4a0ed5154b54599 100644 (file)
@@ -14,7 +14,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <html lang="en">
     <head>
         <p><svg class="icon"><use href="../shared_images/add.svg#icon"/></svg> add.</p>
         <p><svg class="icon"><use href="../shared_images/aod_tablet_rounded_grade200.svg#icon"/></svg> aod_tablet_rounded_grade200.</p>
         <p><svg class="icon"><use href="../shared_images/arrow_back.svg#icon"/></svg> arrow_back.</p>
+        <p><svg class="icon"><use href="../shared_images/arrow_downward_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> arrow_<wbr>downward_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/arrow_forward.svg#icon"/></svg> arrow_forward.</p>
+        <p><svg class="icon"><use href="../shared_images/arrow_upward_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> arrow_<wbr>upward_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/bookmark_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> bookmark_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/bookmarks.svg#icon"/></svg> bookmarks.</p>
         <p><svg class="icon"><use href="../shared_images/bug_report.svg#icon"/></svg> bug_report.</p>
         <p><svg class="icon"><use href="../shared_images/tab.svg#icon"/></svg> tab.</p>
         <p><svg class="icon"><use href="../shared_images/text_fields.svg#icon"/></svg> text_fields.</p>
         <p><svg class="icon"><use href="../shared_images/thumbs_up_down.svg#icon"/></svg> thumbs_up_down.</p>
-        <p><svg class="icon"><use href="../shared_images/vertical_align_bottom.svg#icon"/></svg> vertical_align_bottom.</p>
-        <p><svg class="icon"><use href="../shared_images/vertical_align_top.svg#icon"/></svg> vertical_align_top.</p>
+        <p><svg class="icon"><use href="../shared_images/vertical_align_bottom_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg>
+            vertical_<wbr>align_<wbr>bottom_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
+        <p><svg class="icon"><use href="../shared_images/vertical_align_top_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg>
+            vertical_<wbr>align_<wbr>top_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/visibility_off.svg#icon"/></svg> visibility_off.</p>
         <p><svg class="icon"><use href="../shared_images/vpn_key.svg#icon"/></svg> vpn_key.</p>
         <p><svg class="icon"><use href="../shared_images/vpn_lock.svg#icon"/></svg> vpn_lock.</p>
index 2c5c2e442896da803ad925d8b1eddbbe9af839c9..b8eea77831c188b3268f0acff1f333b885bcc516 100644 (file)
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <html lang="es">
     <head>
         <p><svg class="icon"><use href="../shared_images/add.svg#icon"/></svg> add.</p>
         <p><svg class="icon"><use href="../shared_images/aod_tablet_rounded_grade200.svg#icon"/></svg> aod_tablet_rounded_grade200.</p>
         <p><svg class="icon"><use href="../shared_images/arrow_back.svg#icon"/></svg> arrow_back.</p>
+        <p><svg class="icon"><use href="../shared_images/arrow_downward_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> arrow_<wbr>downward_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/arrow_forward.svg#icon"/></svg> arrow_forward.</p>
+        <p><svg class="icon"><use href="../shared_images/arrow_upward_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> arrow_<wbr>upward_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/bookmark_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> bookmark_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/bookmarks.svg#icon"/></svg> bookmarks.</p>
         <p><svg class="icon"><use href="../shared_images/bug_report.svg#icon"/></svg> bug_report.</p>
         <p><svg class="icon"><use href="../shared_images/tab.svg#icon"/></svg> tab.</p>
         <p><svg class="icon"><use href="../shared_images/text_fields.svg#icon"/></svg> text_fields.</p>
         <p><svg class="icon"><use href="../shared_images/thumbs_up_down.svg#icon"/></svg> thumbs_up_down.</p>
-        <p><svg class="icon"><use href="../shared_images/vertical_align_bottom.svg#icon"/></svg> vertical_align_bottom.</p>
-        <p><svg class="icon"><use href="../shared_images/vertical_align_top.svg#icon"/></svg> vertical_align_top.</p>
+        <p><svg class="icon"><use href="../shared_images/vertical_align_bottom_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg>
+            vertical_<wbr>align_<wbr>bottom_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
+        <p><svg class="icon"><use href="../shared_images/vertical_align_top_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg>
+            vertical_<wbr>align_<wbr>top_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/visibility_off.svg#icon"/></svg> visibility_off.</p>
         <p><svg class="icon"><use href="../shared_images/vpn_key.svg#icon"/></svg> vpn_key.</p>
         <p><svg class="icon"><use href="../shared_images/vpn_lock.svg#icon"/></svg> vpn_lock.</p>
index f3fecb820a744da05854d90d1ebc6534b1aca682..fdd5982969c18878b940d20c049c5c745406563a 100644 (file)
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <html lang="fr">
     <head>
         <p><svg class="icon"><use href="../shared_images/add.svg#icon"/></svg> add.</p>
         <p><svg class="icon"><use href="../shared_images/aod_tablet_rounded_grade200.svg#icon"/></svg> aod_tablet_rounded_grade200.</p>
         <p><svg class="icon"><use href="../shared_images/arrow_back.svg#icon"/></svg> arrow_back.</p>
+        <p><svg class="icon"><use href="../shared_images/arrow_downward_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> arrow_<wbr>downward_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/arrow_forward.svg#icon"/></svg> arrow_forward.</p>
+        <p><svg class="icon"><use href="../shared_images/arrow_upward_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> arrow_<wbr>upward_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/bookmark_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> bookmark_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/bookmarks.svg#icon"/></svg> bookmarks.</p>
         <p><svg class="icon"><use href="../shared_images/bug_report.svg#icon"/></svg> bug_report.</p>
         <p><svg class="icon"><use href="../shared_images/tab.svg#icon"/></svg> tab.</p>
         <p><svg class="icon"><use href="../shared_images/text_fields.svg#icon"/></svg> text_fields.</p>
         <p><svg class="icon"><use href="../shared_images/thumbs_up_down.svg#icon"/></svg> thumbs_up_down.</p>
-        <p><svg class="icon"><use href="../shared_images/vertical_align_bottom.svg#icon"/></svg> vertical_align_bottom.</p>
-        <p><svg class="icon"><use href="../shared_images/vertical_align_top.svg#icon"/></svg> vertical_align_top.</p>
+        <p><svg class="icon"><use href="../shared_images/vertical_align_bottom_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg>
+            vertical_<wbr>align_<wbr>bottom_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
+        <p><svg class="icon"><use href="../shared_images/vertical_align_top_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg>
+            vertical_<wbr>align_<wbr>top_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/visibility_off.svg#icon"/></svg> visibility_off.</p>
         <p><svg class="icon"><use href="../shared_images/vpn_key.svg#icon"/></svg> vpn_key.</p>
         <p><svg class="icon"><use href="../shared_images/vpn_lock.svg#icon"/></svg> vpn_lock.</p>
index 2647b3ce6e1e8036106d8ab6112b9312d145836d..0f6e5633f308d6dd7ca3270b86d21f331127d1b9 100644 (file)
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <html lang="it">
     <head>
         <p><svg class="icon"><use href="../shared_images/add.svg#icon"/></svg> add.</p>
         <p><svg class="icon"><use href="../shared_images/aod_tablet_rounded_grade200.svg#icon"/></svg> aod_tablet_rounded_grade200.</p>
         <p><svg class="icon"><use href="../shared_images/arrow_back.svg#icon"/></svg> arrow_back.</p>
+        <p><svg class="icon"><use href="../shared_images/arrow_downward_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> arrow_<wbr>downward_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/arrow_forward.svg#icon"/></svg> arrow_forward.</p>
+        <p><svg class="icon"><use href="../shared_images/arrow_upward_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> arrow_<wbr>upward_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/bookmark_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> bookmark_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/bookmarks.svg#icon"/></svg> bookmarks.</p>
         <p><svg class="icon"><use href="../shared_images/bug_report.svg#icon"/></svg> bug_report.</p>
         <p><svg class="icon"><use href="../shared_images/tab.svg#icon"/></svg> tab.</p>
         <p><svg class="icon"><use href="../shared_images/text_fields.svg#icon"/></svg> text_fields.</p>
         <p><svg class="icon"><use href="../shared_images/thumbs_up_down.svg#icon"/></svg> thumbs_up_down.</p>
-        <p><svg class="icon"><use href="../shared_images/vertical_align_bottom.svg#icon"/></svg> vertical_align_bottom.</p>
-        <p><svg class="icon"><use href="../shared_images/vertical_align_top.svg#icon"/></svg> vertical_align_top.</p>
+        <p><svg class="icon"><use href="../shared_images/vertical_align_bottom_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg>
+            vertical_<wbr>align_<wbr>bottom_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
+        <p><svg class="icon"><use href="../shared_images/vertical_align_top_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg>
+            vertical_<wbr>align_<wbr>top_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/visibility_off.svg#icon"/></svg> visibility_off.</p>
         <p><svg class="icon"><use href="../shared_images/vpn_key.svg#icon"/></svg> vpn_key.</p>
         <p><svg class="icon"><use href="../shared_images/vpn_lock.svg#icon"/></svg> vpn_lock.</p>
index fc52407357b7758446acd369533fd7e2d65d46a3..d6a47a0265aa60e9e14f2a0473eba2a58293682a 100644 (file)
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <html lang="pt">
     <head>
         <p><svg class="icon"><use href="../shared_images/add.svg#icon"/></svg> add.</p>
         <p><svg class="icon"><use href="../shared_images/aod_tablet_rounded_grade200.svg#icon"/></svg> aod_tablet_rounded_grade200.</p>
         <p><svg class="icon"><use href="../shared_images/arrow_back.svg#icon"/></svg> arrow_back.</p>
+        <p><svg class="icon"><use href="../shared_images/arrow_downward_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> arrow_<wbr>downward_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/arrow_forward.svg#icon"/></svg> arrow_forward.</p>
+        <p><svg class="icon"><use href="../shared_images/arrow_upward_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> arrow_<wbr>upward_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/bookmark_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> bookmark_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/bookmarks.svg#icon"/></svg> bookmarks.</p>
         <p><svg class="icon"><use href="../shared_images/bug_report.svg#icon"/></svg> bug_report.</p>
         <p><svg class="icon"><use href="../shared_images/tab.svg#icon"/></svg> tab.</p>
         <p><svg class="icon"><use href="../shared_images/text_fields.svg#icon"/></svg> text_fields.</p>
         <p><svg class="icon"><use href="../shared_images/thumbs_up_down.svg#icon"/></svg> thumbs_up_down.</p>
-        <p><svg class="icon"><use href="../shared_images/vertical_align_bottom.svg#icon"/></svg> vertical_align_bottom.</p>
-        <p><svg class="icon"><use href="../shared_images/vertical_align_top.svg#icon"/></svg> vertical_align_top.</p>
+        <p><svg class="icon"><use href="../shared_images/vertical_align_bottom_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg>
+            vertical_<wbr>align_<wbr>bottom_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
+        <p><svg class="icon"><use href="../shared_images/vertical_align_top_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg>
+            vertical_<wbr>align_<wbr>top_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/visibility_off.svg#icon"/></svg> visibility_off.</p>
         <p><svg class="icon"><use href="../shared_images/vpn_key.svg#icon"/></svg> vpn_key.</p>
         <p><svg class="icon"><use href="../shared_images/vpn_lock.svg#icon"/></svg> vpn_lock.</p>
index 6e3cac232f83799615e96be2dc64fb26b3d42721..649efed43056021fea1ea256cf37249669938160 100644 (file)
@@ -14,7 +14,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <html lang="ru">
     <head>
         <p><svg class="icon"><use href="../shared_images/add.svg#icon"/></svg> add.</p>
         <p><svg class="icon"><use href="../shared_images/aod_tablet_rounded_grade200.svg#icon"/></svg> aod_tablet_rounded_grade200.</p>
         <p><svg class="icon"><use href="../shared_images/arrow_back.svg#icon"/></svg> arrow_back.</p>
+        <p><svg class="icon"><use href="../shared_images/arrow_downward_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> arrow_<wbr>downward_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/arrow_forward.svg#icon"/></svg> arrow_forward.</p>
+        <p><svg class="icon"><use href="../shared_images/arrow_upward_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> arrow_<wbr>upward_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/bookmark_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> bookmark_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/bookmarks.svg#icon"/></svg> bookmarks.</p>
         <p><svg class="icon"><use href="../shared_images/bug_report.svg#icon"/></svg> bug_report.</p>
         <p><svg class="icon"><use href="../shared_images/tab.svg#icon"/></svg> tab.</p>
         <p><svg class="icon"><use href="../shared_images/text_fields.svg#icon"/></svg> text_fields.</p>
         <p><svg class="icon"><use href="../shared_images/thumbs_up_down.svg#icon"/></svg> thumbs_up_down.</p>
-        <p><svg class="icon"><use href="../shared_images/vertical_align_bottom.svg#icon"/></svg> vertical_align_bottom.</p>
-        <p><svg class="icon"><use href="../shared_images/vertical_align_top.svg#icon"/></svg> vertical_align_top.</p>
+        <p><svg class="icon"><use href="../shared_images/vertical_align_bottom_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg>
+            vertical_<wbr>align_<wbr>bottom_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
+        <p><svg class="icon"><use href="../shared_images/vertical_align_top_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg>
+            vertical_<wbr>align_<wbr>top_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/visibility_off.svg#icon"/></svg> visibility_off.</p>
         <p><svg class="icon"><use href="../shared_images/vpn_key.svg#icon"/></svg> vpn_key.</p>
         <p><svg class="icon"><use href="../shared_images/vpn_lock.svg#icon"/></svg> vpn_lock.</p>
diff --git a/app/src/main/assets/shared_images/arrow_downward_rounded_fill0_weight400_grade0_24px.svg b/app/src/main/assets/shared_images/arrow_downward_rounded_fill0_weight400_grade0_24px.svg
new file mode 100644 (file)
index 0000000..003d271
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<!--
+  Copyright 2024 Soren Stoutner <soren@stoutner.com>.
+
+  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
+
+  It is a modified version of `arrow_downward_rounded_fill0_weight400_grade0_24px`, which is part of the Android Material icon set and is released under the Apache License 2.0 <https://fonts.google.com/icons>.
+
+  Privacy Browser Android is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  Privacy Browser Android is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
+
+
+<svg
+    xmlns="http://www.w3.org/2000/svg"
+    viewBox="0 -960 960 960"
+    id="icon" >
+
+    <path
+        d="M440-313v-447q0-17 11.5-28.5T480-800q17 0 28.5 11.5T520-760v447l196-196q12-12 28-11.5t28 12.5q11 12 11.5 28T772-452L508-188q-6 6-13 8.5t-15 2.5q-8 0-15-2.5t-13-8.5L188-452q-11-11-11-27.5t11-28.5q12-12 28.5-12t28.5 12l195 195Z" />
+</svg>
diff --git a/app/src/main/assets/shared_images/arrow_upward_rounded_fill0_weight400_grade0_24px.svg b/app/src/main/assets/shared_images/arrow_upward_rounded_fill0_weight400_grade0_24px.svg
new file mode 100644 (file)
index 0000000..f7db369
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<!--
+  Copyright 2024 Soren Stoutner <soren@stoutner.com>.
+
+  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
+
+  It is a modified version of `arrow_upward_rounded_fill0_weight400_grade0_24px`, which is part of the Android Material icon set and is released under the Apache License 2.0 <https://fonts.google.com/icons>.
+
+  Privacy Browser Android is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  Privacy Browser Android is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
+
+<svg
+    xmlns="http://www.w3.org/2000/svg"
+    viewBox="0 -960 960 960"
+    id="icon" >
+
+    <path
+        d="M440-647 244-451q-12 12-28 11.5T188-452q-11-12-11.5-28t11.5-28l264-264q6-6 13-8.5t15-2.5q8 0 15 2.5t13 8.5l264 264q11 11 11 27.5T772-452q-12 12-28.5 12T715-452L520-647v447q0 17-11.5 28.5T480-160q-17 0-28.5-11.5T440-200v-447Z" />
+</svg>
index 232a38f3db9583dc099a134ddd6a047496c99b7c..aa5b1a6b510e27293825f2d4e64aa8b6c8f9186c 100644 (file)
@@ -18,7 +18,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <svg
     xmlns="http://www.w3.org/2000/svg"
diff --git a/app/src/main/assets/shared_images/vertical_align_bottom.svg b/app/src/main/assets/shared_images/vertical_align_bottom.svg
deleted file mode 100644 (file)
index 371e6a9..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-
-<!--
-  Copyright 2020,2022 Soren Stoutner <soren@stoutner.com>.
-
-  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
-
-  It is a modified version of `vertical_align_bottom`, which is part of the Android Material icon set and is released under the Apache License 2.0.
-
-  Privacy Browser Android is free software: you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation, either version 3 of the License, or
-  (at your option) any later version.
-
-  Privacy Browser Android is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
-
-<svg
-    xmlns="http://www.w3.org/2000/svg"
-    viewBox="0 0 24 24"
-    id="icon" >
-
-    <path
-        d="M16 13h-3V3h-2v10H8l4 4 4-4zM4 19v2h16v-2H4z" />
-</svg>
diff --git a/app/src/main/assets/shared_images/vertical_align_bottom_rounded_fill0_weight400_grade0_24px.svg b/app/src/main/assets/shared_images/vertical_align_bottom_rounded_fill0_weight400_grade0_24px.svg
new file mode 100644 (file)
index 0000000..d5e2952
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<!--
+  Copyright 2024 Soren Stoutner <soren@stoutner.com>.
+
+  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
+
+  It is a modified version of `vertical_align_bottom_rounded_fill0_weight400_grade0_24px`, which is part of the Android Material icon set and is released under the Apache License 2.0 <https://fonts.google.com/icons>.
+
+  Privacy Browser Android is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  Privacy Browser Android is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
+
+<svg
+    xmlns="http://www.w3.org/2000/svg"
+    viewBox="0 -960 960 960"
+    id="icon" >
+
+    <path
+        d="M200-120q-17 0-28.5-11.5T160-160q0-17 11.5-28.5T200-200h560q17 0 28.5 11.5T800-160q0 17-11.5 28.5T760-120H200Zm280-177q-8 0-15-2.5t-13-8.5L308-452q-11-11-11-28t11-28q11-11 28-11t28 11l76 76v-368q0-17 11.5-28.5T480-840q17 0 28.5 11.5T520-800v368l76-76q11-11 28-11t28 11q11 11 11 28t-11 28L508-308q-6 6-13 8.5t-15 2.5Z" />
+</svg>
diff --git a/app/src/main/assets/shared_images/vertical_align_top.svg b/app/src/main/assets/shared_images/vertical_align_top.svg
deleted file mode 100644 (file)
index 8c4e76d..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-
-<!--
-  Copyright 2020,2022 Soren Stoutner <soren@stoutner.com>.
-
-  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
-
-  It is a modified version of `vertical_align_top`, which is part of the Android Material icon set and is released under the Apache License 2.0.
-
-  Privacy Browser Android is free software: you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation, either version 3 of the License, or
-  (at your option) any later version.
-
-  Privacy Browser Android is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
-
-<svg
-    xmlns="http://www.w3.org/2000/svg"
-    viewBox="0 0 24 24"
-    id="icon" >
-
-    <path
-        d="M8 11h3v10h2V11h3l-4-4-4 4zM4 3v2h16V3H4z" />
-</svg>
diff --git a/app/src/main/assets/shared_images/vertical_align_top_rounded_fill0_weight400_grade0_24px.svg b/app/src/main/assets/shared_images/vertical_align_top_rounded_fill0_weight400_grade0_24px.svg
new file mode 100644 (file)
index 0000000..2a78866
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<!--
+  Copyright 2024 Soren Stoutner <soren@stoutner.com>.
+
+  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
+
+  It is a modified version of `vertical_align_top_rounded_fill0_weight400_grade0_24px`, which is part of the Android Material icon set and is released under the Apache License 2.0 <https://fonts.google.com/icons>.
+
+  Privacy Browser Android is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  Privacy Browser Android is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
+
+<svg
+    xmlns="http://www.w3.org/2000/svg"
+    viewBox="0 -960 960 960"
+    id="icon" >
+
+    <path
+        d="M200-760q-17 0-28.5-11.5T160-800q0-17 11.5-28.5T200-840h560q17 0 28.5 11.5T800-800q0 17-11.5 28.5T760-760H200Zm280 640q-17 0-28.5-11.5T440-160v-368l-76 76q-11 11-28 11t-28-11q-11-11-11-28t11-28l144-144q6-6 13-8.5t15-2.5q8 0 15 2.5t13 8.5l144 144q11 11 11 28t-11 28q-11 11-28 11t-28-11l-76-76v368q0 17-11.5 28.5T480-120Z" />
+</svg>
index 158b8bb8b866dbc85527659927a5c1d59d42aaee..c1a5f6c67bee15ef3b692f2279b0baacbc5b1eb2 100644 (file)
@@ -14,7 +14,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <html lang="tr">
     <head>
         <p><svg class="icon"><use href="../shared_images/add.svg#icon"/></svg> add.</p>
         <p><svg class="icon"><use href="../shared_images/aod_tablet_rounded_grade200.svg#icon"/></svg> aod_tablet_rounded_grade200.</p>
         <p><svg class="icon"><use href="../shared_images/arrow_back.svg#icon"/></svg> arrow_back.</p>
+        <p><svg class="icon"><use href="../shared_images/arrow_downward_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> arrow_<wbr>downward_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/arrow_forward.svg#icon"/></svg> arrow_forward.</p>
+        <p><svg class="icon"><use href="../shared_images/arrow_upward_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> arrow_<wbr>upward_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/bookmark_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> bookmark_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/bookmarks.svg#icon"/></svg> bookmarks.</p>
         <p><svg class="icon"><use href="../shared_images/bug_report.svg#icon"/></svg> bug_report.</p>
         <p><svg class="icon"><use href="../shared_images/tab.svg#icon"/></svg> tab.</p>
         <p><svg class="icon"><use href="../shared_images/text_fields.svg#icon"/></svg> text_fields.</p>
         <p><svg class="icon"><use href="../shared_images/thumbs_up_down.svg#icon"/></svg> thumbs_up_down.</p>
-        <p><svg class="icon"><use href="../shared_images/vertical_align_bottom.svg#icon"/></svg> vertical_align_bottom.</p>
-        <p><svg class="icon"><use href="../shared_images/vertical_align_top.svg#icon"/></svg> vertical_align_top.</p>
+        <p><svg class="icon"><use href="../shared_images/vertical_align_bottom_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg>
+            vertical_<wbr>align_<wbr>bottom_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
+        <p><svg class="icon"><use href="../shared_images/vertical_align_top_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg>
+            vertical_<wbr>align_<wbr>top_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/visibility_off.svg#icon"/></svg> visibility_off.</p>
         <p><svg class="icon"><use href="../shared_images/vpn_key.svg#icon"/></svg> vpn_key.</p>
         <p><svg class="icon"><use href="../shared_images/vpn_lock.svg#icon"/></svg> vpn_lock.</p>
index 858649a524f8f3cb205282d2f4617894eb1d51c3..ac8c552092eb15ee4bc8445f09c6c1a357879d39 100644 (file)
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <html lang="zh">
     <head>
         <p><svg class="icon"><use href="../shared_images/add.svg#icon"/></svg> add.</p>
         <p><svg class="icon"><use href="../shared_images/aod_tablet_rounded_grade200.svg#icon"/></svg> aod_tablet_rounded_grade200.</p>
         <p><svg class="icon"><use href="../shared_images/arrow_back.svg#icon"/></svg> arrow_back.</p>
+        <p><svg class="icon"><use href="../shared_images/arrow_downward_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> arrow_<wbr>downward_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/arrow_forward.svg#icon"/></svg> arrow_forward.</p>
+        <p><svg class="icon"><use href="../shared_images/arrow_upward_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> arrow_<wbr>upward_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/bookmark_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg> bookmark_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/bookmarks.svg#icon"/></svg> bookmarks.</p>
         <p><svg class="icon"><use href="../shared_images/bug_report.svg#icon"/></svg> bug_report.</p>
         <p><svg class="icon"><use href="../shared_images/tab.svg#icon"/></svg> tab.</p>
         <p><svg class="icon"><use href="../shared_images/text_fields.svg#icon"/></svg> text_fields.</p>
         <p><svg class="icon"><use href="../shared_images/thumbs_up_down.svg#icon"/></svg> thumbs_up_down.</p>
-        <p><svg class="icon"><use href="../shared_images/vertical_align_bottom.svg#icon"/></svg> vertical_align_bottom.</p>
-        <p><svg class="icon"><use href="../shared_images/vertical_align_top.svg#icon"/></svg> vertical_align_top.</p>
+        <p><svg class="icon"><use href="../shared_images/vertical_align_bottom_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg>
+            vertical_<wbr>align_<wbr>bottom_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
+        <p><svg class="icon"><use href="../shared_images/vertical_align_top_rounded_fill0_weight400_grade0_24px.svg#icon"/></svg>
+            vertical_<wbr>align_<wbr>top_<wbr>rounded_<wbr>fill0_<wbr>weight400_<wbr>grade0_<wbr>24px.</p>
         <p><svg class="icon"><use href="../shared_images/visibility_off.svg#icon"/></svg> visibility_off.</p>
         <p><svg class="icon"><use href="../shared_images/vpn_key.svg#icon"/></svg> vpn_key.</p>
         <p><svg class="icon"><use href="../shared_images/vpn_lock.svg#icon"/></svg> vpn_lock.</p>
index 794f7e5dbf41b268908631b9a0a282e8d88f1b65..62004a9a29a6d075b8b2377677bfdb1c635468a3 100644 (file)
@@ -14,7 +14,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>.
+ * along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>.
  */
 
 package com.stoutner.privacybrowser.activities
@@ -105,6 +105,8 @@ class BookmarksActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBookma
     private lateinit var currentFavoriteIconByteArray: ByteArray
     private lateinit var moveBookmarkDownMenuItem: MenuItem
     private lateinit var moveBookmarkUpMenuItem: MenuItem
+    private lateinit var moveToTopMenuItem: MenuItem
+    private lateinit var moveToBottomMenuItem: MenuItem
     private lateinit var moveToFolderMenuItem: MenuItem
 
     override fun onCreate(savedInstanceState: Bundle?) {
@@ -231,6 +233,8 @@ class BookmarksActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBookma
                 // Get handles for menu items that need to be selectively disabled.
                 moveBookmarkUpMenuItem = menu.findItem(R.id.move_bookmark_up)
                 moveBookmarkDownMenuItem = menu.findItem(R.id.move_bookmark_down)
+                moveToTopMenuItem = menu.findItem(R.id.move_to_top)
+                moveToBottomMenuItem = menu.findItem(R.id.move_to_bottom)
                 moveToFolderMenuItem = menu.findItem(R.id.move_to_folder)
                 editBookmarkMenuItem = menu.findItem(R.id.edit_bookmark)
                 deleteBookmarksMenuItem = menu.findItem(R.id.delete_bookmark)
@@ -240,6 +244,8 @@ class BookmarksActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBookma
                 if (sortBookmarksAlphabetically) {
                     moveBookmarkUpMenuItem.isVisible = false
                     moveBookmarkDownMenuItem.isVisible = false
+                    moveToTopMenuItem.isVisible = false
+                    moveToBottomMenuItem.isVisible = false
                 }
 
                 // Disable the delete bookmarks menu item if a delete is pending.
@@ -278,10 +284,6 @@ class BookmarksActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBookma
 
                             // Show the edit bookmark menu item.
                             editBookmarkMenuItem.isVisible = true
-
-                            // Update the enabled status of the move icons if the bookmarks are not sorted alphabetically.
-                            if (!sortBookmarksAlphabetically)
-                                updateMoveIcons()
                         } else {  // More than one bookmark is selected.
                             // Update the move menu items if the bookmarks are not sorted alphabetically.
                             if (!sortBookmarksAlphabetically) {
@@ -293,6 +295,23 @@ class BookmarksActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBookma
                             editBookmarkMenuItem.isVisible = false
                         }
 
+                        //  Update the move icons if not sorting alphabetically.
+                        if (!sortBookmarksAlphabetically) {
+                            // Adjust the visibility of the move to top and bottom menu items.
+                            if ((numberOfSelectedBookmarks == bookmarksListView.count)) {  // All the bookmarks are selected.
+                                // Hide the move to top and bottom menu items.
+                                moveToTopMenuItem.isVisible = false
+                                moveToBottomMenuItem.isVisible = false
+                            } else {  // Not all the bookmarks are selected.
+                                // Show the move to top and bottom menu item.
+                                moveToTopMenuItem.isVisible = true
+                                moveToBottomMenuItem.isVisible = true
+                            }
+
+                            // Update the move icons.
+                            updateMoveIcons()
+                        }
+
                         // Display the move to folder menu item if at least one other folder exists.
                         moveToFolderMenuItem.isVisible = bookmarksDatabaseHelper.hasFoldersExceptDatabaseId(bookmarksListView.checkedItemIds)
 
@@ -365,7 +384,7 @@ class BookmarksActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBookma
                     bookmarksCursorAdapter.changeCursor(bookmarksCursor)
 
                     // Scroll to the new bookmark position.
-                    scrollBookmarks(checkedBookmarkNewPosition)
+                    bookmarksListView.setSelection(checkedBookmarkNewPosition)
 
                     // Update the enabled status of the move icons.
                     updateMoveIcons()
@@ -419,6 +438,122 @@ class BookmarksActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBookma
 
                     // Update the enabled status of the move icons.
                     updateMoveIcons()
+                } else if (menuItemId == R.id.move_to_top) {  // Move to top.
+                    // Get a list of selected bookmark IDs by display order.
+                    val selectedBookmarkIdsList = getSelectedBookmarkIdsByDisplayOrder()
+
+                    // Update the display order of the bookmarks that are selected.  `newDisplayOrder` is the index, which auto-increments.
+                    for ((newSelectedBookmarkDisplayOrder, bookmarkDatabaseId) in selectedBookmarkIdsList.withIndex()) {
+                        // Set the new bookmark position.
+                        bookmarksDatabaseHelper.updateDisplayOrder(bookmarkDatabaseId, newSelectedBookmarkDisplayOrder)
+                    }
+
+                    // Get the number of bookmarks.
+                    val numberOfSelectedBookmarks = selectedBookmarkIdsList.size
+                    val totalNumberOfBookmarksMinusOne = bookmarksListView.count - 1
+
+                    // Initialize the new unselected bookmark display order.
+                    var newUnselectedBookmarkDisplayOrder = numberOfSelectedBookmarks
+
+                    // Increment the display order of the other bookmarks by the number of selected bookmarks.
+                    for (i in 0..totalNumberOfBookmarksMinusOne) {
+                        // Get the bookmark database ID long at the indicated position.
+                        val bookmarkDatabaseIdLong = bookmarksListView.getItemIdAtPosition(i)
+
+                        // Increment the display order if it isn't one of the selected bookmarks.
+                        if (!selectedBookmarkIdsList.contains(bookmarkDatabaseIdLong.toInt())) {
+                            // Move the bookmarks cursor to the current bookmark position.
+                            bookmarksCursor.moveToPosition(i)
+
+                            // Update the unselected bookmark display order if it has changed.
+                            if (bookmarksCursor.getInt(bookmarksCursor.getColumnIndexOrThrow(DISPLAY_ORDER)) != newUnselectedBookmarkDisplayOrder)
+                                bookmarksDatabaseHelper.updateDisplayOrder(bookmarkDatabaseIdLong.toInt(), newUnselectedBookmarkDisplayOrder)
+
+                            // Increment the new unselected bookmark display order.
+                            ++newUnselectedBookmarkDisplayOrder
+                        }
+                    }
+
+                    // Update the bookmarks cursor with the current contents of the bookmarks database.
+                    bookmarksCursor = bookmarksDatabaseHelper.getBookmarksByDisplayOrder(currentFolderId)
+
+                    // Update the list view.
+                    bookmarksCursorAdapter.changeCursor(bookmarksCursor)
+
+                    // Update the enabled status of the move icons.
+                    updateMoveIcons()
+
+                    // Reselect the original bookmarks (the system only automatically does so for those that were visible before the move).
+                    for (i in 0..totalNumberOfBookmarksMinusOne) {
+                        // Reelect the originally selected bookmarks.  Deselect all the other bookmarks.
+                        bookmarksListView.setItemChecked(i, i < numberOfSelectedBookmarks)
+                    }
+
+                    // Scroll to the top.
+                    scrollBookmarks(0)
+                } else if (menuItemId == R.id.move_to_bottom) {  // Move to bottom.
+                    // Get a list of selected bookmark IDs by display order.
+                    val selectedBookmarkIdsList = getSelectedBookmarkIdsByDisplayOrder()
+
+                    // Get the number of bookmarks.
+                    val numberOfSelectedBookmarks = selectedBookmarkIdsList.size
+                    val totalNumberOfBookmarks = bookmarksListView.count
+                    val totalNumberOfBookmarksMinusOne = totalNumberOfBookmarks - 1
+
+                    // Initialize the new selected bookmark display order.
+                    var newSelectedBookmarkDisplayOrder = totalNumberOfBookmarks - numberOfSelectedBookmarks
+
+                    // Update the display order of the bookmarks that are selected.
+                    for (bookmarkDatabaseId in selectedBookmarkIdsList) {
+                        // Set the new bookmark position.
+                        bookmarksDatabaseHelper.updateDisplayOrder(bookmarkDatabaseId, newSelectedBookmarkDisplayOrder)
+
+                        // Increment the new selected bookmark display order.
+                        ++newSelectedBookmarkDisplayOrder
+                    }
+
+                    // Initialize the new unselected bookmark display order.
+                    var newUnselectedBookmarkDisplayOrder = 0
+
+                    // Increment the display order of the bookmarks that are not selected.
+                    for (i in 0..totalNumberOfBookmarksMinusOne) {
+                        // Get the bookmark database ID long at the indicated position.
+                        val bookmarkDatabaseIdLong = bookmarksListView.getItemIdAtPosition(i)
+
+                        // Adjust the display order if it isn't one of the selected bookmarks.
+                        if (!selectedBookmarkIdsList.contains(bookmarkDatabaseIdLong.toInt())) {
+                            // Move the bookmarks cursor to the current bookmark position.
+                            bookmarksCursor.moveToPosition(i)
+
+                            // Update the unselected bookmark display order if it has changed.
+                            if (bookmarksCursor.getInt(bookmarksCursor.getColumnIndexOrThrow(DISPLAY_ORDER)) != newUnselectedBookmarkDisplayOrder)
+                                bookmarksDatabaseHelper.updateDisplayOrder(bookmarkDatabaseIdLong.toInt(), newUnselectedBookmarkDisplayOrder)
+
+                            // Increment the new unselected bookmark display order.
+                            ++newUnselectedBookmarkDisplayOrder
+                        }
+                    }
+
+                    // Update the bookmarks cursor with the current contents of the bookmarks database.
+                    bookmarksCursor = bookmarksDatabaseHelper.getBookmarksByDisplayOrder(currentFolderId)
+
+                    // Update the list view.
+                    bookmarksCursorAdapter.changeCursor(bookmarksCursor)
+
+                    // Update the enabled status of the move icons.
+                    updateMoveIcons()
+
+                    // Calculate th
+                    val firstSelectedBookmarkAtEnd = totalNumberOfBookmarks - numberOfSelectedBookmarks
+
+                    // Reselect the original bookmarks (the system only automatically does so for those that were visible before the move).
+                    for (i in 0..totalNumberOfBookmarksMinusOne) {
+                        // Reelect the originally selected bookmarks.  Deselect all the other bookmarks.
+                        bookmarksListView.setItemChecked(i, i >= firstSelectedBookmarkAtEnd)
+                    }
+
+                    // Scroll to the bottom.
+                    scrollBookmarks(totalNumberOfBookmarksMinusOne)
                 } else if (menuItemId == R.id.move_to_folder) {  // Move to folder.
                     // Instantiate the move to folder alert dialog.
                     val moveToFolderDialog = MoveToFolderDialog.moveBookmarks(currentFolderId, bookmarksListView.checkedItemIds)
@@ -1048,6 +1183,35 @@ class BookmarksActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBookma
         }
     }
 
+    private fun getSelectedBookmarkIdsByDisplayOrder(): List<Int> {
+        // Create the lists.
+        val selectedBookmarkPositionsList = mutableListOf<Int>()
+        val selectedBookmarkIdsList = mutableListOf<Int>()
+
+        // Get the array of checked bookmark positions.
+        val checkedBookmarkPositionsSparseBooleanArray = bookmarksListView.checkedItemPositions
+
+        // Get the checked bookmarks positions sparse boolean array size.
+        val checkedBookmarkPositionsSparseBooleanArraySize = checkedBookmarkPositionsSparseBooleanArray.size()
+
+        // Get the position of the bookmarks that are selected.  If other bookmarks have previously been selected they will be included in the sparse boolean array with a value of `false`.
+        for (i in 0 until checkedBookmarkPositionsSparseBooleanArraySize) {
+            // Check to see if the value for the bookmark is true, meaning it is currently selected.
+            if (checkedBookmarkPositionsSparseBooleanArray.valueAt(i)) {
+                // Add the selected bookmarks positions to the list.
+                selectedBookmarkPositionsList.add(checkedBookmarkPositionsSparseBooleanArray.keyAt(i))
+            }
+        }
+
+        // Get the selected bookmark IDs from their positions.  The selected bookmark positions list will already be sorted by position.
+        for (selectedBookmarkPosition in selectedBookmarkPositionsList) {
+            selectedBookmarkIdsList.add(bookmarksListView.getItemIdAtPosition(selectedBookmarkPosition).toInt())
+        }
+
+        // Return the selected bookmark IDs list.
+        return selectedBookmarkIdsList
+    }
+
     private fun prepareFinish() {
         // Check to see if a snackbar is currently displayed.  If so, it must be closed before exiting so that a pending delete is completed before reloading the list view in the bookmarks drawer.
         if (bookmarksDeletedSnackbar != null && bookmarksDeletedSnackbar!!.isShown) {  // Close the bookmarks deleted snackbar before going home.
@@ -1069,23 +1233,23 @@ class BookmarksActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBookma
     }
 
     private fun updateMoveIcons() {
-        // Get a long array of the selected bookmarks.
-        val selectedBookmarksLongArray = bookmarksListView.checkedItemIds
+        // Get a long array of the selected bookmarks IDs.
+        val selectedBookmarkIdsLongArray = bookmarksListView.checkedItemIds
 
         // Get the database IDs for the first, last, and selected bookmarks.
         val firstBookmarkDatabaseId = bookmarksListView.getItemIdAtPosition(0).toInt()
         val lastBookmarkDatabaseId = bookmarksListView.getItemIdAtPosition(bookmarksListView.count - 1).toInt()  // The bookmarks list view is 0 indexed.
-        val selectedBookmarkDatabaseId = selectedBookmarksLongArray[0].toInt()
+        val firstSelectedBookmarkDatabaseId = selectedBookmarkIdsLongArray[0].toInt()
 
         // Update the move bookmark up menu item.
-        if (selectedBookmarkDatabaseId == firstBookmarkDatabaseId) {  // The selected bookmark is in the first position.
-            // Disable the move bookmark up menu item.
+        if (firstSelectedBookmarkDatabaseId == firstBookmarkDatabaseId) {  // The selected bookmark is in the first position.
+            // Disable the menu item.
             moveBookmarkUpMenuItem.isEnabled = false
 
             //  Set the icon.
             moveBookmarkUpMenuItem.setIcon(R.drawable.move_up_disabled)
         } else {  // The selected bookmark is not in the first position.
-            // Enable the move bookmark up menu item.
+            // Enable the menu item.
             moveBookmarkUpMenuItem.isEnabled = true
 
             // Set the icon according to the theme.
@@ -1093,19 +1257,82 @@ class BookmarksActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBookma
         }
 
         // Update the move bookmark down menu item.
-        if (selectedBookmarkDatabaseId == lastBookmarkDatabaseId) {  // The selected bookmark is in the last position.
-            // Disable the move bookmark down menu item.
+        if (firstSelectedBookmarkDatabaseId == lastBookmarkDatabaseId) {  // The selected bookmark is in the last position.
+            // Disable the menu item.
             moveBookmarkDownMenuItem.isEnabled = false
 
             // Set the icon.
             moveBookmarkDownMenuItem.setIcon(R.drawable.move_down_disabled)
         } else {  // The selected bookmark is not in the last position.
-            // Enable the move bookmark down menu item.
+            // Enable the menu item.
             moveBookmarkDownMenuItem.isEnabled = true
 
             // Set the icon.
             moveBookmarkDownMenuItem.setIcon(R.drawable.move_down_enabled)
         }
+
+        // Create a list of selected bookmark positions.
+        val selectedBookmarkPositionsList = mutableListOf<Int>()
+
+        // Get the array of checked bookmark positions.
+        val checkedBookmarkPositionsSparseBooleanArray = bookmarksListView.checkedItemPositions
+
+        // Get the checked bookmarks positions sparse boolean array size.
+        val checkedBookmarkPositionsSparseBooleanArraySize = checkedBookmarkPositionsSparseBooleanArray.size()
+
+        // Get the position of the bookmarks that are selected.  If other bookmarks have previously been selected they will be included in the sparse boolean array with a value of `false`.
+        for (i in 0 until checkedBookmarkPositionsSparseBooleanArraySize) {
+            // Check to see if the value for the bookmark is true, meaning it is currently selected.
+            if (checkedBookmarkPositionsSparseBooleanArray.valueAt(i)) {
+                // Add the selected bookmarks positions to the list.
+                selectedBookmarkPositionsList.add(checkedBookmarkPositionsSparseBooleanArray.keyAt(i))
+            }
+        }
+
+        // Get the selected bookmark positions list size.
+        val selectedBookmarkPositionsListSize = selectedBookmarkPositionsList.size
+
+        // Create a contiguous selected bookmarks tracker.
+        var selectedBookmarksAreContiguous = true
+
+        for (i in 0 until selectedBookmarkPositionsListSize) {
+            // Check all the items after the first one.
+            if (i > 0) {
+                // Mark the list as not contiguous if any of the bookmark positions jump by more than 1.
+                if (selectedBookmarkPositionsList.elementAt(i) - selectedBookmarkPositionsList.elementAt(i - 1) != 1)
+                    selectedBookmarksAreContiguous = false
+            }
+        }
+
+        // Update the move to top menu item.
+        if (selectedBookmarkIdsLongArray.contains(firstBookmarkDatabaseId.toLong()) && selectedBookmarksAreContiguous) {  // The selected bookmarks contains the first bookmark and they are contiguous.
+            // Disable the menu item.
+            moveToTopMenuItem.isEnabled = false
+
+            // Set the icon.
+            moveToTopMenuItem.setIcon(R.drawable.move_to_top_disabled)
+        } else {  // The selected bookmarks do not contain the first bookmark.
+            // Enable the menu item.
+            moveToTopMenuItem.isEnabled = true
+
+            // Set the icon.
+            moveToTopMenuItem.setIcon(R.drawable.move_to_top_enabled)
+        }
+
+        // Update the move to bottom menu item.
+        if (selectedBookmarkIdsLongArray.contains(lastBookmarkDatabaseId.toLong()) && selectedBookmarksAreContiguous) {  // The selected bookmarks contains the last bookmark and they are contiguous.
+            // Disable the menu item.
+            moveToBottomMenuItem.isEnabled = false
+
+            // Set the icon.
+            moveToBottomMenuItem.setIcon(R.drawable.move_to_bottom_disabled)
+        } else {  // The selected bookmarks do not contain the last bookmark.
+            // Enable the menu item.
+            moveToBottomMenuItem.isEnabled = true
+
+            // Set the icon.
+            moveToBottomMenuItem.setIcon(R.drawable.move_to_bottom_enabled)
+        }
     }
 
     private fun scrollBookmarks(selectedBookmarkPosition: Int) {
index 2f9b09e4263df03238f83436ac36c64aa4143530..c6172edd6a456c996f4597ab70854848be82aa88 100644 (file)
@@ -16,7 +16,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>.
+ * along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>.
  */
 
 package com.stoutner.privacybrowser.activities
@@ -4562,13 +4562,13 @@ class MainWebViewActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBook
                             navigationScrollToBottomMenuItem.title = getString(R.string.scroll_to_bottom)
 
                             // Set the icon.
-                            navigationScrollToBottomMenuItem.icon = AppCompatResources.getDrawable(applicationContext, R.drawable.move_down_enabled)
+                            navigationScrollToBottomMenuItem.icon = AppCompatResources.getDrawable(applicationContext, R.drawable.move_to_bottom_enabled)
                         } else {  // The WebView is not scrolled to the top.
                             // Set the title.
                             navigationScrollToBottomMenuItem.title = getString(R.string.scroll_to_top)
 
                             // Set the icon.
-                            navigationScrollToBottomMenuItem.icon = AppCompatResources.getDrawable(applicationContext, R.drawable.move_up_enabled)
+                            navigationScrollToBottomMenuItem.icon = AppCompatResources.getDrawable(applicationContext, R.drawable.move_to_top_enabled)
                         }
 
                         // Display the number of blocked requests.
index 929ce15ce1211bad05a51f00727cce522607e696..98235479152d5b62c9bed5b5cd58e635a4c9d1c1 100644 (file)
@@ -14,7 +14,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>.
+ * along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>.
  */
 
 package com.stoutner.privacybrowser.helpers
index 05b7570ecf4d39b18e5a4f5bce01ca62c2654048..ac2df64229956c8a165de36766fc35735562a140 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `info_outline`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `info_outline`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 2cd8c2f9a100171a2e1e78ac561a686ca4dbe415..462e4959b740717e3adb73f5be7dd62e5ec4ba53 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `add`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `add`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 786a5f4c9d468996744919d30556c039528c967d..f3fea1f532fd4bf9af18e03193e4c45a53f9fa68 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `camera_enhance`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `camera_enhance`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 2c84bcfacbc82c4b17fe4d58a3709001ae07ace0..a2faeefc28c9cfb96863f7dcb75516b1479ce84d 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `camera_enhance`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `camera_enhance`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 9efc1177d5fcc69384e7eb17423bbb7715f6eef5..570dcd460272f27e029a8f45dd181aa139fd844b 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `payment`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `payment`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index fc17bee4aad2102396f5d4d19d2e47fe7c61cf3c..9fbb231dd839fde6ece520e81f6e9649fd7eb3c2 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `payment`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `payment`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 3b39fc6affbaba11749230aaf2600c784a240603..265f39ed86747a19c6216a3c18c2ee96e7d0490d 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `payment`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `payment`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 4ca53003addf0b2bc4fd6e924bc027ff8274d2e9..65c14e07b69043d2eaae329f3e5d1e995f5d15d5 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `style`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `style`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index d48b44166b6227b5767a69fa307745661912b3dc..816bb40f6c793250e373691d661ec0fedbda9fd6 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `arrow_back`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `arrow_back`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 5df79df1bae7347b719dda86eb2d7cf9860321bd..98ad234e554c09effac39d36a1dcd49ea4b9ed13 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `web`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `web`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index f1dbcba90608c29e89707811273c5c1f223887ea..5c0a7044a14daca8a9ed401c966f4d017d58a8e7 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `web`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `web`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 995739ba646c3e0e5d1920f9c02e4ab7dc40141c..b8b27876eea5f96ba7cd5012cd1861ba25365f0f 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `new_releases`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `new_releases`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 838887d7748ffe3c177c2d1b06d818e7fc3edb50..3c0d1a1f3d470520088b66a8cf0d1a5eb3605210 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `new_releases`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `new_releases`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index b66927b8968aeae8605014362ebb906b10b1d055..4a23afb733e535d7a1d5d86aebdac119c67a8edc 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `location_off`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `location_off`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 8b46fbd186d187bf5522bdc8566548242694fa51..3faa073fa781fb1b7eca8379eeddc529d53c3113 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `location_off`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `location_off`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index f5d22131278ec4ce99b507dcdef189d727c5183d..86f809dfdf48c417eafa0c1f470c08249cd6d203 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `call_to_action`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `call_to_action`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index f396d0528374ca2d6c610a3cf99feeab8bae4af8..de59567221142029750b596f4cde1b3edd4d3f2d 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `call_to_action`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `call_to_action`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index af98c3bc138c05a901db475392a74756a8bff7d7..6bbc9cea5d8868ba809d04e1249564c49504332b 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `donut_small`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `donut_small`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 330cf11edd75014c431f84150a18fc82ca1524e9..68538ef347bd2966597ee101573c28547ecce15b 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `donut_small`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `donut_small`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 390e5a923ff2c1c3bbc8901008166f52e712369d..d8f1e0878ed0492a31b6fda3352caec6dbb586a4 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file was created by Google and downloaded from <https://materialdesignicons.com/icon/cookie>.  It is released under the Apache License 2.0. -->
+<!-- This file was created by Google and downloaded from <https://materialdesignicons.com/icon/cookie>.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 56ccbe30263b9544dec0364429cdc07aaf29cacb..96b43a9d4d74c06c12105d7e762748126dc8415e 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file was created by Google and downloaded from <https://materialdesignicons.com/icon/cookie>.  It is released under the Apache License 2.0. -->
+<!-- This file was created by Google and downloaded from <https://materialdesignicons.com/icon/cookie>.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 67b56dced1f032ebdf74921c9a983db5859543f9..68cc9128ce96c6cfb74401c6e9ba471ef92db905 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `web`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `web`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index d92cf94432e1682280b0ab5a5629974c765c4ee8..6722aad0eea095bf0409fc0abc7db2de8d09a3ea 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `web`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `web`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index d5c875cc8e55a72fc0589ee7679e248c4ed33657..71ba227645d5c984deb3c0872ae0a46796b254bb 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `delete_forever`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `delete_forever`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 2815d71ead7484f7158eef72e36713b582735cd2..5b98b45746d49802285eef439eef8c13edd411e8 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `delete_forever`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `delete_forever`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index d6cb939a48e4ba970fbfd6ed49bb22be54889886..4c7dcf3fba3670b6ff167f0bce84d49038a461ee 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `list_alt_rounded_24px`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `list_alt_rounded_24px`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index dad9aede9ac979a5cad8989931e3c8c79c12ae1d..ba99cb193a7ae5ea965d098e87e41c98d861a740 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `list_alt_rounded_24px`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `list_alt_rounded_24px`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 5620750c751332bbbc4cd4d9012812052677c6b8..2a35006b30a8fafcbd6bb5ca7b6cbf39786fadaa 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `close`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `close`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 7533be84075126cf718c42716d459404ca8c2d49..822e00aa3a7bb78918aac72edb54117f23c99776 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `close`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `close`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index e6c98338ef1c6470ab047cce1ffef43eff1360bd..21260d5b8b667c07cb22e20fab670bdada336940 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file was created by Google and downloaded from <https://materialdesignicons.com/icon/cookie>.  It is released under the Apache License 2.0. -->
+<!-- This file was created by Google and downloaded from <https://materialdesignicons.com/icon/cookie>.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 9f1c3f89e8998cd5e871137a2dda7883b0957708..a9f851c9e9f61216bf7d679ecee39ef35e5475bd 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file was created by Google and downloaded from <https://materialdesignicons.com/icon/cookie>.  It is released under the Apache License 2.0. -->
+<!-- This file was created by Google and downloaded from <https://materialdesignicons.com/icon/cookie>.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 3347c08b796bacf4fe46beff1051d017de608331..3eb04dfab87091a7cca416819b298937445123ef 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `file_copy`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `file_copy`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index d719c3d5fb9952deb2ee48ed0ae24e5a775111f1..98c4ed2dd545b5a2cf1e7b56f4e45dda201d6655 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright 2017, 2022, 2024 Soren Stoutner <soren@stoutner.com>.
 
-  This file is derived from elements of `bookmark` and `create_new_folder`, which are part of the Android Material icon set.  They are released under the Apache License 2.0 <https://fonts.google.com/icons>.
+  This file is derived from elements of `bookmark` and `create_new_folder`, which are part of the Android Material icon set <https://fonts.google.com/icons>.  They are released under the Apache License 2.0.
 
   This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
 
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 451d5e845b48a52e9fd88f6ca0d3dd6f06d044fb..e6844b8d4d343926908fbb2651efc05af7558098 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `create_new_folder`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `create_new_folder`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index abbadad69fdb4fe5157e7f6545775abf97871ec1..02dabb8511d29b31bd50e1db6d907f60a7491a98 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `important_devices_off`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `important_devices_off`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index b0fa318e1438f099c1c49e03c9fea05fdfe45998..29775e5752a8a90393c3c080e93ddde1c72a9dfe 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `important_devices_off`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `important_devices_off`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 57343e94071eaf71786fe71d7bae18a4a2457741..20826b5a6da6a52fe0806a3d0e73a52a120e90fd 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `delete`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `delete`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index f6de66339bf4d19d947aed7e48501095d37326ad..e8776e09f52fb017701bcb21c3dfe305869f113b 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `web`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `web`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 360f1cd6c2c9e29c86c8841dc7de8bc4510614e6..cd3c9868ec9c9422416221011d3375d443789dea 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `web`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `web`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index f672ceb16dfbb8bb1a2073614d37eb15d9fe0df3..c8dd0fea98fe68bf962125ca82e067db5a97f56c 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `web`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `web`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index cef941fd01e5a9ae7938dcb30c743d0763d56b49..0021073868fd7ebbcb915581e0c3f2d1a32b3c15 100644 (file)
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <shape
     xmlns:android="http://schemas.android.com/apk/res/android"
index 78af485c5db0c9ed17d9c993c06597e67147eb32..654824b5730d261af7c572b9e382f672ff91fc7d 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `import_contacts`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `import_contacts`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index b98ad8c2f02898e3bc781369d94cbfe091e1bbb9..56ec9af8fc12410aa74f91b143d7a2112d36dc05 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `file_download`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `file_download`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 5e731914aacedc60166f0dedff956cc4370217d1..58786ef904768b871220cf81d218e4ed01fbe62d 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright 2017, 2022 Soren Stoutner <soren@stoutner.com>.
 
-  This file is derived from `exit_to_app`, which is part of the Android Material icon set.  It is released under the Apache License 2.0.
+  This file is derived from `exit_to_app`, which is part of the Android Material icon set <https://fonts.google.com/icons>.  It is released under the Apache License 2.0.
 
   This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
 
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index f9cb3f45a84d5d73d6793f46a25f7e11a0c97b7b..00eb6267480b4036e807c1c9d7e4782b6ed26f4a 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   Copyright 2017, 2022 Soren Stoutner <soren@stoutner.com>.
 
-  This file is derived from `exit_to_app`, which is part of the Android Material icon set.  It is released under the Apache License 2.0.
+  This file is derived from `exit_to_app`, which is part of the Android Material icon set <https://fonts.google.com/icons>.  It is released under the Apache License 2.0.
 
   This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
 
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 937dadb63906fc5d674c0b020d7bc657103387a4..ce5587685590413e7c8324c3aa5b0b2785cb9ee9 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `edit`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `edit`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index a82d2d1fdb5f10e02b4680a8af195343130a7f57..14d51aa3799543111c8836b87c93f51b870cf6e5 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `folder`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `folder`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index e07a41c7ca7df5205955ba906eaaffe36519ad52..9ad49c06771edad403d08b316f635131ed46e21e 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `folder`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `folder`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index f2f12987df2db303cc870448e87860feed0999b7..283ad4f4988093894dbaeca7c763623a37850632 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `text_fields`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `text_fields`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 370332fa95297c7d8be5811ea4b7b998210b21c3..0507cc89db365cd6c8a46ef5f64b133998fe602a 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `arrow_forward`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `arrow_forward`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index cb68b77f308c32284e0306e829304cc43f5f639d..e7beb11747921f1ddc7b6571f1099d14434a6475 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `smartphone`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `smartphone`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index f6cdf13d56b49a76d4b8646d4539c8b511ceaff5..4d44ae0a1aa0bcacd0a297a4d8b5ac57c0acefa7 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `smartphone`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `smartphone`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index dfbdf897a685f51762505b85ab6584efb6c5085d..66822ff1843e0b68351daefc3647f2b99632888d 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `import_contacts`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `import_contacts`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 8acda0eae08824576126302112ce3af62a9fb2c7..f80c66e1ebc62e20c4f7869c542d86df995d5d70 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `list`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `list`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index cdafe0a171a566ce193c2b1de18422fbb58f1f03..d7a25f09b8de50625baf71536eb5f2e6ec7743d6 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `home`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `home`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 6e8357b532d4e260be52ac3e5d0ee2d1c5b6e2c0..c5d4ea183a6c2efcada88098348a4ab627af82c8 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `image`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `image`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 7c087f631d25d70590c607fd1c9489823bf91cc8..c3cb779da6559da78a2c790651d598d043ec7e5c 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `image`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `image`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index daac5fd705dee940ff36ad46145702a376b737b2..0449b8c83cdca857e41bdc2d846096cdd276f787 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `image`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `image`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 46e65c28140a7a609b3f58ab2e197c2e0e6a40e3..19598b6436b05c21bd8f2af68886d22eab119e16 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `import_export`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `import_export`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index f73a229472e2153a8ea05e23234d5259d553f0e3..4b653a1c51aac0cda75a2a6b2e6dec49ceeb663e 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `visibility_off`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `visibility_off`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 61f88e6b4570c0de36699382f72515bfde570495..a484acb2e1dbc775feb16898e6b3b68fa4f9486f 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `visibility_off`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `visibility_off`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index be18adb4a6c8ad6f709d2a21d1e04eb3bbfdb4c8..b3fb438810c74931797db0c5e665988851dae244 100644 (file)
@@ -1,9 +1,9 @@
 <!--
   Copyright 2016-2017,2022-2023 Soren Stoutner <soren@stoutner.com>.
 
-  This file is derived from `security` and `language`, which are part of the Android Material icon set.  They are released under the Apache License 2.0.
+  This file is derived from `security` and `language`, which are part of the Android Material icon set <https://fonts.google.com/icons>.  They are released under the Apache License 2.0.
 
-  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
+  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
 
   Privacy Browser Android is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 20629ba47b77d96b3d0286e5ae0f8b031ed2394e..26395ab04ace6eb6f90edf4a7d59b815b4dfb554 100644 (file)
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <!-- This selector changes the background of activated items in a list view. -->
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
index cc00ae00b03de5fcebb5aefd31dd2e7023fac313..27625f4d662ea1eb7a7a603aeec8ee111a2fbda6 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `lock`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `lock`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
@@ -10,4 +10,4 @@
     <path
         android:fillColor="@color/blue_icon"
         android:pathData="M18,8h-1L17,6c0,-2.76 -2.24,-5 -5,-5S7,3.24 7,6v2L6,8c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L20,10c0,-1.1 -0.9,-2 -2,-2zM12,17c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2zM15.1,8L8.9,8L8.9,6c0,-1.71 1.39,-3.1 3.1,-3.1 1.71,0 3.1,1.39 3.1,3.1v2z"/>
-</vector>
\ No newline at end of file
+</vector>
index 67d9f2b806b681f327cacf8984976efb440f44e5..a556dc0204825eea90be0b3a9a177e2d2ff7b3f1 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `menu_rounded_weight400_grade0_24px`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `menu_rounded_weight400_grade0_24px`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index dd8deb6bb4f9be17025a7fe330ba8ccad33966eb..717c9ca39899bcb744057f6d41ae1f02b57cfed5 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `link_off`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `link_off`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index b96b2e6da3868dd430af80eb73e0940af0f33152..e00a7da2a6186414e5c614db602660279aeb037f 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `link_off`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `link_off`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index c8afc9b72b0f1662d63965483132cf9ae7445a45..1e8f16c9ab7b26465dcf0d7529e5a708b29f7fa6 100644 (file)
@@ -1,13 +1,13 @@
-<!-- This file comes from the Android Material icon set, where it is called `vertical_align_bottom`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
+<!-- This file comes from the Android Material icon set, where it is called `arrow_downward_rounded_fill0_weight400_grade0_24px`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:height="24dp"
     android:width="24dp"
-    android:viewportHeight="24"
-    android:viewportWidth="24" >
+    android:viewportHeight="960"
+    android:viewportWidth="960" >
 
     <path
         android:fillColor="@color/gray_500"
-        android:pathData="M16,13h-3V3h-2v10H8l4,4 4,-4zM4,19v2h16v-2H4z"/>
-</vector>
\ No newline at end of file
+        android:pathData="M440,647v-447q0,-17 11.5,-28.5T480,160q17,0 28.5,11.5T520,200v447l196,-196q12,-12 28,-11.5t28,12.5q11,12 11.5,28T772,508L508,772q-6,6 -13,8.5t-15,2.5q-8,0 -15,-2.5t-13,-8.5L188,508q-11,-11 -11,-27.5t11,-28.5q12,-12 28.5,-12t28.5,12l195,195Z" />
+</vector>
index e957ae015fb7ab8dbc39613ba9cb09b2fc72e2d3..70007af985c9e412497162bef1301dac2c6db77d 100644 (file)
@@ -1,13 +1,13 @@
-<!-- This file comes from the Android Material icon set, where it is called `vertical_align_bottom`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
+<!-- This file comes from the Android Material icon set, where it is called `arrow_downward_rounded_fill0_weight400_grade0_24px`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:height="24dp"
     android:width="24dp"
-    android:viewportHeight="24"
-    android:viewportWidth="24" >
+    android:viewportHeight="960"
+    android:viewportWidth="960" >
 
     <path
         android:fillColor="@color/icon"
-        android:pathData="M16,13h-3V3h-2v10H8l4,4 4,-4zM4,19v2h16v-2H4z"/>
-</vector>
\ No newline at end of file
+        android:pathData="M440,647v-447q0,-17 11.5,-28.5T480,160q17,0 28.5,11.5T520,200v447l196,-196q12,-12 28,-11.5t28,12.5q11,12 11.5,28T772,508L508,772q-6,6 -13,8.5t-15,2.5q-8,0 -15,-2.5t-13,-8.5L188,508q-11,-11 -11,-27.5t11,-28.5q12,-12 28.5,-12t28.5,12l195,195Z" />
+</vector>
diff --git a/app/src/main/res/drawable/move_to_bottom_disabled.xml b/app/src/main/res/drawable/move_to_bottom_disabled.xml
new file mode 100644 (file)
index 0000000..fa6313c
--- /dev/null
@@ -0,0 +1,13 @@
+<!-- This file comes from the Android Material icon set, where it is called `vertical_align_bottom_rounded_fill0_weight400_grade0_24px`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportHeight="960"
+    android:viewportWidth="960" >
+
+    <path
+        android:fillColor="@color/gray_500"
+        android:pathData="M200,840q-17,0 -28.5,-11.5T160,800q0,-17 11.5,-28.5T200,760h560q17,0 28.5,11.5T800,800q0,17 -11.5,28.5T760,840L200,840ZM480,663q-8,0 -15,-2.5t-13,-8.5L308,508q-11,-11 -11,-28t11,-28q11,-11 28,-11t28,11l76,76v-368q0,-17 11.5,-28.5T480,120q17,0 28.5,11.5T520,160v368l76,-76q11,-11 28,-11t28,11q11,11 11,28t-11,28L508,652q-6,6 -13,8.5t-15,2.5Z" />
+</vector>
diff --git a/app/src/main/res/drawable/move_to_bottom_enabled.xml b/app/src/main/res/drawable/move_to_bottom_enabled.xml
new file mode 100644 (file)
index 0000000..6c671b8
--- /dev/null
@@ -0,0 +1,13 @@
+<!-- This file comes from the Android Material icon set, where it is called `vertical_align_bottom_rounded_fill0_weight400_grade0_24px`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportHeight="960"
+    android:viewportWidth="960" >
+
+    <path
+        android:fillColor="@color/icon"
+        android:pathData="M200,840q-17,0 -28.5,-11.5T160,800q0,-17 11.5,-28.5T200,760h560q17,0 28.5,11.5T800,800q0,17 -11.5,28.5T760,840L200,840ZM480,663q-8,0 -15,-2.5t-13,-8.5L308,508q-11,-11 -11,-28t11,-28q11,-11 28,-11t28,11l76,76v-368q0,-17 11.5,-28.5T480,120q17,0 28.5,11.5T520,160v368l76,-76q11,-11 28,-11t28,11q11,11 11,28t-11,28L508,652q-6,6 -13,8.5t-15,2.5Z" />
+</vector>
index 2187503e9125ea6dc932e7b89223cf5e5372ccca..8883f2caae67fefd3cf8d5ff12f1ce40d7b0ec6f 100644 (file)
@@ -1,9 +1,9 @@
 <!--
   Copyright 2017,2022 Soren Stoutner <soren@stoutner.com>.
 
-  This file is derived from elements of `folder` and `exit_to_app`, which are part of the Android Material icon set.  They are released under the Apache License 2.0 <https://fonts.google.com/icons>.
+  This file is derived from elements of `folder` and `exit_to_app`, which are part of the Android Material icon set <https://fonts.google.com/icons>.  They are released under the Apache License 2.0.
 
-  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
+  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
 
   Privacy Browser Android is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
diff --git a/app/src/main/res/drawable/move_to_top_disabled.xml b/app/src/main/res/drawable/move_to_top_disabled.xml
new file mode 100644 (file)
index 0000000..a2d76f4
--- /dev/null
@@ -0,0 +1,13 @@
+<!-- This file comes from the Android Material icon set, where it is called `vertical_align_top_rounded_fill0_weight400_grade0_24px`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportHeight="960"
+    android:viewportWidth="960" >
+
+    <path
+        android:fillColor="@color/gray_500"
+        android:pathData="M200,200q-17,0 -28.5,-11.5T160,160q0,-17 11.5,-28.5T200,120h560q17,0 28.5,11.5T800,160q0,17 -11.5,28.5T760,200L200,200ZM480,840q-17,0 -28.5,-11.5T440,800v-368l-76,76q-11,11 -28,11t-28,-11q-11,-11 -11,-28t11,-28l144,-144q6,-6 13,-8.5t15,-2.5q8,0 15,2.5t13,8.5l144,144q11,11 11,28t-11,28q-11,11 -28,11t-28,-11l-76,-76v368q0,17 -11.5,28.5T480,840Z" />
+</vector>
diff --git a/app/src/main/res/drawable/move_to_top_enabled.xml b/app/src/main/res/drawable/move_to_top_enabled.xml
new file mode 100644 (file)
index 0000000..eeb8eee
--- /dev/null
@@ -0,0 +1,13 @@
+<!-- This file comes from the Android Material icon set, where it is called `vertical_align_top_rounded_fill0_weight400_grade0_24px`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportHeight="960"
+    android:viewportWidth="960" >
+
+    <path
+        android:fillColor="@color/icon"
+        android:pathData="M200,200q-17,0 -28.5,-11.5T160,160q0,-17 11.5,-28.5T200,120h560q17,0 28.5,11.5T800,160q0,17 -11.5,28.5T760,200L200,200ZM480,840q-17,0 -28.5,-11.5T440,800v-368l-76,76q-11,11 -28,11t-28,-11q-11,-11 -11,-28t11,-28l144,-144q6,-6 13,-8.5t15,-2.5q8,0 15,2.5t13,8.5l144,144q11,11 11,28t-11,28q-11,11 -28,11t-28,-11l-76,-76v368q0,17 -11.5,28.5T480,840Z" />
+</vector>
index 6aa24cc35ab8c60cdde948ad516306a918aed893..4be762d39863025705de44d265f120123ad1cb5c 100644 (file)
@@ -1,13 +1,13 @@
-<!-- This file comes from the Android Material icon set, where it is called `vertical_align_top`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
+<!-- This file comes from the Android Material icon set, where it is called `arrow_upward_rounded_fill0_weight400_grade0_24px`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:height="24dp"
     android:width="24dp"
-    android:viewportHeight="24"
-    android:viewportWidth="24" >
+    android:viewportHeight="960"
+    android:viewportWidth="960" >
 
     <path
         android:fillColor="@color/gray_500"
-        android:pathData="M8,11h3v10h2V11h3l-4,-4 -4,4zM4,3v2h16V3H4z"/>
-</vector>
\ No newline at end of file
+        android:pathData="M440,313 L244,509q-12,12 -28,11.5T188,508q-11,-12 -11.5,-28t11.5,-28l264,-264q6,-6 13,-8.5t15,-2.5q8,0 15,2.5t13,8.5l264,264q11,11 11,27.5T772,508q-12,12 -28.5,12T715,508L520,313v447q0,17 -11.5,28.5T480,800q-17,0 -28.5,-11.5T440,760v-447Z" />
+</vector>
index 89f66c67a4a5b291616bc63c993e25820b6f1d3c..2d3574a3029285b9719052b196b37583e623fe16 100644 (file)
@@ -1,13 +1,13 @@
-<!-- This file comes from the Android Material icon set, where it is called `vertical_align_top`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
+<!-- This file comes from the Android Material icon set, where it is called `arrow_upward_rounded_fill0_weight400_grade0_24px`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:height="24dp"
     android:width="24dp"
-    android:viewportHeight="24"
-    android:viewportWidth="24" >
+    android:viewportHeight="960"
+    android:viewportWidth="960" >
 
     <path
         android:fillColor="@color/icon"
-        android:pathData="M8,11h3v10h2V11h3l-4,-4 -4,4zM4,3v2h16V3H4z"/>
-</vector>
\ No newline at end of file
+        android:pathData="M440,313 L244,509q-12,12 -28,11.5T188,508q-11,-12 -11.5,-28t11.5,-28l264,-264q6,-6 13,-8.5t15,-2.5q8,0 15,2.5t13,8.5l264,264q11,11 11,27.5T772,508q-12,12 -28.5,12T715,508L520,313v447q0,17 -11.5,28.5T480,800q-17,0 -28.5,-11.5T440,760v-447Z" />
+</vector>
index 58bf8f7149f33890e6bc80bf0b57ad6e1e92720b..6eb0a2370a463764a1c207474082adce7179a870 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `expand_more`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `expand_more`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 4b6947b7555df2566538afae47ad9fd217b46cd7..015c3d2bdcd848590452892aae1d076b4dd5cb4b 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `push_pin_filled`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `push_pin_filled`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index f7a1d9b0619802be50437b3c09059af26db42a80..dc66b9e45929f5b8bdc4a57e5684aed67b3ae2c8 100644 (file)
@@ -1,9 +1,9 @@
 <!--
   Copyright 2019,2022 Soren Stoutner <soren@stoutner.com>.
 
-  This file is derived from `push_pin_filled`, which is part of the Android Material icon set and is released under the Apache License 2.0.
+  This file is derived from `push_pin_filled`, which is part of the Android Material icon set <https://fonts.google.com/icons>.  It is released under the Apache License 2.0.
 
-  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
+  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
 
   Privacy Browser Android is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 0964180a55579b7198c315bd2fd733010d1ca4fe..dde1fd4ae36aa31896d4824065a5b08cf999f5d8 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `expand_less`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `expand_less`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index dd81b475c709bf6524c9564a41dec57d09153142..b822ffb69bc70379c33efef65d446284c46da62a 100644 (file)
@@ -1,9 +1,9 @@
 <!--
   Copyright 2016-2017,2021-2023 Soren Stoutner <soren@stoutner.com>.
 
-  This file is derived from `security` and `language`, which are part of the Android Material icon set.  They are released under the Apache License 2.0.
+  This file is derived from `security` and `language`, which are part of the Android Material icon set <https://fonts.google.com/icons>.  They are released under the Apache License 2.0.
 
-  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
+  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
 
   Privacy Browser Android is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 679d8a4316cf429a35a2281e70f9f1899dabd4ea..53506f3359cad019570451e6d4d81f68fe51f200 100644 (file)
@@ -1,9 +1,9 @@
 <!--
   Copyright 2016-2017,2021-2023 Soren Stoutner <soren@stoutner.com>.
 
-  This file is derived from `security` and `language`, which are part of the Android Material icon set.  They are released under the Apache License 2.0.
+  This file is derived from `security` and `language`, which are part of the Android Material icon set <https://fonts.google.com/icons>.  They are released under the Apache License 2.0.
 
-  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
+  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
 
   Privacy Browser Android is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 4010fef113540110159c3e1215aafebd08862975..8f8ed2e61e67438e62fdd924418912f5a81899c5 100644 (file)
@@ -1,9 +1,9 @@
 <!--
   Copyright © 2016-2017,2022-2023 Soren Stoutner <soren@stoutner.com>.
 
-  This file is derived from `security` and `language`, which are part of the Android Material icon set.  They are released under the Apache License 2.0.
+  This file is derived from `security` and `language`, which are part of the Android Material icon set <https://fonts.google.com/icons>.  They are released under the Apache License 2.0.
 
-  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
+  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
 
   Privacy Browser Android is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 9d0866295d3b13ba587270649d3f977db58c0de7..99a9a0581312720a649826cdd8259a2283f5dc3f 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `open_in_browser`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `open_in_browser`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 8506c902d9e2ade2dd5c87ba3093a83c254103ff..b1416f4210947f8fd63867387d5cd8e2b38633bb 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `open_in_browser`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `open_in_browser`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index b1fa71a96c4e0c283717bcde0b43dc423d5dc1a2..4b5fef66b809f52ee6265d30c58efda3f1f8ee30 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `open_in_browser`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `open_in_browser`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index c5605c153edbe7067c5c002d84753cee97322c7a..cac9aa219889877a7619de833248bb0a1b32a02c 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `refresh`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `refresh`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index af1b49dff67b25b672ede4cf1d458cce67e93204..2bbdef4b20c160726e8e3fa13b35a3daed87870b 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `refresh`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `refresh`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 6a07f7c846ac1eb0c73c429ed319dbf9ce41d898..3b05e5cbff8a11276e566cfad5aa78ff761a2eb3 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `save`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `save`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index b6fc49546235e8024a3157450151c3499bc54e0c..157981311d376049f183d73480cfd8d7025365a6 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `chrome_reader_mode`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `chrome_reader_mode`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 044be8b4808e103cacd239a2a3577b9221a9ced4..f742ed9ae24801fa927b6912ac117073eeba6618 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `find_in_page`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `find_in_page`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index f502ec625f335a03e5745bfce70363b91d510010..d4cf75ea885298ef042551f8d03e43ad3a2df3a4 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `find_in_page`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `find_in_page`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 407b6d4337b6761f8d836fd7705666dea22a89f4..5eeccf1f8e819248d2252af4055d1bdd0a408db9 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `select_all`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `select_all`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 5a591753ecd3e3930c4417a5f97d737ad8ccfdc8..c37368315eb7a992a4b1a1eedd46a47515b6d60c 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `settings`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `settings`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index c7ecf1dc2719075774c5a752b6eef9630837ec86..7f43ef29a0ecd50b806e84852bf514b95ebe7c20 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `image`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `image`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index e9ab498151bf2e8ce023066cadbb49e9017e9a28..12499b16fa9ba074ae79a5288efcc222817dab6f 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `thumbs_up_down`.  It is released under the Apache License 2.0.  -->
+<!-- This file comes from the Android Material icon set, where it is called `thumbs_up_down`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>.  -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index cc414c9a80e0f357d93014c0a5c97e7696bbd18c..f87683ee6ee1fa2c3fbf52cfc5c5529343202c20 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `thumbs_up_down`.  It is released under the Apache License 2.0.  -->
+<!-- This file comes from the Android Material icon set, where it is called `thumbs_up_down`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>.  -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 4ea2fed8f0ccd28785011f51ff0fd3e2dbbc9812..07c84a3db66fd523b56eded77803846311e53832 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `thumbs_up_down`.  It is released under the Apache License 2.0.  -->
+<!-- This file comes from the Android Material icon set, where it is called `thumbs_up_down`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>.  -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 6892e4de9ecf9d7a1d0a9c5f1802d8b36e202e82..21034af49a3447caf2ac39545f9de2707bfb3426 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `sort`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `sort`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index a911b995736e8de6820181927b4ed78095e7011f..88cb9f4bfd5139edf5907ded76830aefc3dfa7a4 100644 (file)
@@ -1,9 +1,9 @@
 <!--
   Copyright 2019,2022 Soren Stoutner <soren@stoutner.com>.
 
-  This file is derived from `sort`, which is part of the Android Material icon set and is released under the Apache License 2.0.
+  This file is derived from `sort`, which is part of the Android Material icon set and is released under the Apache License 2.0 <https://fonts.google.com/icons>.
 
-  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
+  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
 
   Privacy Browser Android is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index dd6ac8c7f3899489a66c84c21bd391a3d2cd7036..8e54361b37c220f0fefc831c36e8b826f03dda1a 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `vpn_lock`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `vpn_lock`.  It is released under the Apache License 2.0<https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index f77302bbdc3b6aec8ed97b372ace843cc467798b..afbbb7c9ad9f7076ab96a61c73abf6e14ec75b65 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `tab`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `tab`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index bc01dfac5f225689d97a39d9872624e8c0baa7ef..3b5046c889f51ee1275ad1d752d01d9cfd74d338 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `tab`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `tab`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 84032b9a0eaa2fe9c8bee374ec30bedd068913d2..27c0a71579233b890fd4ecf80c4632561675f1ef 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `devices_other`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `devices_other`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 8f314bdb11df44e317d2583a3d0eb6d02c8f4dbf..82cd91e5cab8b7066c6f14de2ff400847fc5e991 100644 (file)
@@ -1,9 +1,9 @@
 <!--
   Copyright 2016-2017,2022-2023 Soren Stoutner <soren@stoutner.com>.
 
-  This file is derived from `security` and `language`, which are part of the Android Material icon set.  They are released under the Apache License 2.0.
+  This file is derived from `security` and `language`, which are part of the Android Material icon set <https://fonts.google.com/icons>.  They are released under the Apache License 2.0.
 
-  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
+  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
 
   Privacy Browser Android is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index bce80597203bb93c9f6ffe934a7d99254215d03b..db7f89b07d62182239fb9292418537fd74eca4cc 100644 (file)
@@ -1,9 +1,9 @@
 <!--
   Copyright © 2017,2022 Soren Stoutner <soren@stoutner.com>.
 
-  This file is derived from `compare`, which is part of the Android Material icon set.  It is released under the Apache License 2.0.
+  This file is derived from `compare`, which is part of the Android Material icon set <https://fonts.google.com/icons>.  It is released under the Apache License 2.0.
 
-  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
+  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
 
   Privacy Browser Android is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 47b7ddc79d855ee4019e9d080af6c6f3d72ff4b9..10215f9d5dbf59543cbd5dfbe861a0de809e4ead 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `expand_more`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `expand_more`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 8303ab79d4b775c6c0bfb7759be47e206018e770..8059ad5dbe4c6e3907c5fa2985898dd3b0370f72 100644 (file)
@@ -1,9 +1,9 @@
 <!--
   Copyright © 2017,2022 Soren Stoutner <soren@stoutner.com>.
 
-  This file is derived from `compare`, which is part of the Android Material icon set.  It is released under the Apache License 2.0.
+  This file is derived from `compare`, which is part of the Android Material icon set <https://fonts.google.com/icons>.  It is released under the Apache License 2.0.
 
-  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
+  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
 
   Privacy Browser Android is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 670fb63008f45caff10e6af769fb787195a6d92d..389f2f3f5368053d310a59f43b11da6c95890500 100644 (file)
@@ -1,9 +1,9 @@
 <!--
   Copyright © 2017,2022 Soren Stoutner <soren@stoutner.com>.
 
-  This file is derived from `compare`, which is part of the Android Material icon set.  It is released under the Apache License 2.0.
+  This file is derived from `compare`, which is part of the Android Material icon set <https://fonts.google.com/icons>.  It is released under the Apache License 2.0.
 
-  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
+  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
 
   Privacy Browser Android is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index a56630ccfd0cfbb27e39915c2d1c0cf159464628..360ef02349c6dc502b3c68ee1e06f3db456272c8 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `settings_overscan`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `settings_overscan`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 94f74aaede85f03a29d0fff5b652602fae0d252f..0f91eb7708e52aeba852c16a730fdd264acf557a 100644 (file)
@@ -1,4 +1,4 @@
-<!-- This file comes from the Android Material icon set, where it is called `settings_overscan`.  It is released under the Apache License 2.0. -->
+<!-- This file comes from the Android Material icon set, where it is called `settings_overscan`.  It is released under the Apache License 2.0 <https://fonts.google.com/icons>. -->
 
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
index 35f3461be4e3403e2a5a634d7c97aee2edc09931..e7055458401734b16917fdeea8fd83c107721f24 100644 (file)
@@ -3,7 +3,7 @@
 <!--
   Copyright 2015-2017, 2020, 2022-2024 Soren Stoutner <soren@stoutner.com>.
 
-  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
+  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
 
   Privacy Browser Android is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <menu
     xmlns:android="http://schemas.android.com/apk/res/android"
         android:orderInCategory="20"
         app:showAsAction="ifRoom" />
 
+    <item
+        android:id="@+id/move_to_top"
+        android:title="@string/move_to_top"
+        android:orderInCategory="30"
+        app:showAsAction="ifRoom" />
+
+    <item
+        android:id="@+id/move_to_bottom"
+        android:title="@string/move_to_bottom"
+        android:orderInCategory="40"
+        app:showAsAction="ifRoom" />
+
     <item
         android:id="@+id/move_to_folder"
         android:title="@string/move_to_folder"
-        android:orderInCategory="30"
+        android:orderInCategory="50"
         android:icon="@drawable/move_to_folder_blue"
         android:iconTint="@color/icon"
         app:showAsAction="ifRoom" />
     <item
         android:id="@+id/edit_bookmark"
         android:title="@string/edit"
-        android:orderInCategory="40"
+        android:orderInCategory="60"
         android:icon="@drawable/edit"
         app:showAsAction="ifRoom" />
 
     <item
         android:id="@+id/delete_bookmark"
         android:title="@string/delete"
-        android:orderInCategory="50"
+        android:orderInCategory="70"
         android:icon="@drawable/delete"
         app:showAsAction="ifRoom" />
 
     <item
         android:id="@+id/context_menu_select_all_bookmarks"
         android:title="@string/select_all"
-        android:orderInCategory="60"
+        android:orderInCategory="80"
         android:icon="@drawable/select_all"
         app:showAsAction="ifRoom" />
 </menu>
index 03c8bdeda7d94ddcd3d135824ead7c78c2d6cbe0..c9dbd8441d9db74de69acf693ff8793f9b14ca95 100644 (file)
@@ -3,7 +3,7 @@
 <!--
   Copyright 2015-2018,2022-2023 Soren Stoutner <soren@stoutner.com>.
 
-  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
+  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
 
   Privacy Browser Android is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <menu
     xmlns:android="http://schemas.android.com/apk/res/android"
index 7674f00d63fdb9113ec97153da6c3e1410ad7948..ef4727f49da0f5bd61bcf1380397cadc94fc482e 100644 (file)
@@ -3,7 +3,7 @@
 <!--
   Copyright 2016-2024 Soren Stoutner <soren@stoutner.com>.
 
-  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
+  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
 
   Privacy Browser Android is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <menu xmlns:android="http://schemas.android.com/apk/res/android" >
     <item
@@ -96,7 +96,7 @@
         <item
             android:id="@+id/scroll_to_bottom"
             android:title="@string/scroll_to_bottom"
-            android:icon="@drawable/move_down_enabled"
+            android:icon="@drawable/move_to_bottom_enabled"
             android:orderInCategory="120" />
 
         <item
index 3f3fcd5aa679b6792c8ae38ab69a650facf21acd..503d50eed1df95cbe8dc376db372d21bf146fe70 100644 (file)
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 
 <!--
-  Copyright 2016-2023 Soren Stoutner <soren@stoutner.com>.
+  Copyright 2016-2024 Soren Stoutner <soren@stoutner.com>.
 
-  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
+  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
 
   Privacy Browser Android is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <menu xmlns:android="http://schemas.android.com/apk/res/android" >
 
@@ -49,7 +49,7 @@
         <item
             android:id="@+id/scroll_to_bottom"
             android:title="@string/scroll_to_bottom"
-            android:icon="@drawable/move_down_enabled"
+            android:icon="@drawable/move_to_bottom_enabled"
             android:orderInCategory="50" />
 
         <item
index f0837f6c407eeb37ced4d346dfea0ed1715876d6..088a35343f8e0e81535bf0b8352d5a0a6b34c336 100644 (file)
@@ -22,7 +22,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <resources xmlns:tools="http://schemas.android.com/tools">
     <!-- Activities. -->
     <string name="open_image_in_new_tab">Grafik in neuem Tab öffnen</string>
     <string name="share_image">Bild teilen</string>
     <string name="copy_url">URL kopieren</string>
+    <string name="copy_text">Text kopieren</string>
     <string name="email_address">E-Mail-Adresse</string>
     <string name="copy_email_address">E-Mail-Adresse kopieren</string>
     <string name="write_email">E-Mail senden</string>
index eeaa5a237cd4f40062d922162e1ce2d68c5c1fea..ca05c27647e8d0aa86bdceb23a9fce8784d015d4 100644 (file)
@@ -16,7 +16,7 @@
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>. -->
 
 <!-- `tools:ignore="MissingTranslation"` allows release APKs to be built if translation strings are missing.  The missing strings will fall back to English. -->
 <resources
     <string name="selected">Selected:\u0020 %1$d</string>
     <string name="move_up">Move Up</string>
     <string name="move_down">Move Down</string>
+    <string name="move_to_top">Move to Top</string>
+    <string name="move_to_bottom">Move to Bottom</string>
     <string name="edit">Edit</string>
     <string name="delete">Delete</string>
     <string name="select_all">Select All</string>
             <item>Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Mobile Safari/537.36</item>
             <item>Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1</item>
             <item>Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0</item>
-            <item>Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36</item>
-            <item>Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0</item>
-            <item>Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36</item>
-            <item>Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0</item>
+            <item>Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36</item>
+            <item>Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:130.0) Gecko/20100101 Firefox/130.0</item>
+            <item>Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36</item>
+            <item>Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0</item>
             <item>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_Z) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Safari/605.1.15</item>
             <item>Custom user agent</item>  <!-- This item must not be translated into other languages because it is referenced in code.  It is never displayed on the screen. -->
         </string-array>
index 027a715dbccf6fe709a723443c4fa4ac2a3f2834..da3439b9fe32aaef2f069a909c157913f4091978 100644 (file)
@@ -14,7 +14,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>.
+ * along with Privacy Browser Android.  If not, see <https://www.gnu.org/licenses/>.
  */
 
 // Top-level build file where you can add configuration options common to all sub-projects/modules.