* 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 {
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'
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'
}
<!--
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
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"
<!--
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
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"
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>
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>
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>
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>
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>
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>
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>
--- /dev/null
+<?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>
--- /dev/null
+<?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>
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"
+++ /dev/null
-<?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>
--- /dev/null
+<?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>
+++ /dev/null
-<?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>
--- /dev/null
+<?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>
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>
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>
* 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
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?) {
// 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)
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.
// 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) {
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)
bookmarksCursorAdapter.changeCursor(bookmarksCursor)
// Scroll to the new bookmark position.
- scrollBookmarks(checkedBookmarkNewPosition)
+ bookmarksListView.setSelection(checkedBookmarkNewPosition)
// Update the enabled status of the move icons.
updateMoveIcons()
// 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)
}
}
+ 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.
}
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.
}
// 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) {
* 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
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.
* 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
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
<!--
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>.
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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
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"
-<!-- 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"
-<!-- 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"
<!--
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>.
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"
<!--
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>.
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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
<!--
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
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"
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">
-<!-- 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"
<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>
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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>
-<!-- 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>
--- /dev/null
+<!-- 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>
--- /dev/null
+<!-- 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>
<!--
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
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"
--- /dev/null
+<!-- 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>
--- /dev/null
+<!-- 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>
-<!-- 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>
-<!-- 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>
-<!-- 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"
-<!-- 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"
<!--
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
-<!-- 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"
<!--
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
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"
<!--
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
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"
<!--
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
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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
<!--
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
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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
-<!-- 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"
<!--
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
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"
<!--
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
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"
-<!-- 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"
<!--
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
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"
<!--
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
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"
-<!-- 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"
-<!-- 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"
<!--
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
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>
<!--
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
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"
<!--
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
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
<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
<?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
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
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
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>
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>
* 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.