From 6f8247bfc1b2c231e99302568a7b962b24174580 Mon Sep 17 00:00:00 2001 From: Soren Stoutner Date: Wed, 7 Dec 2022 11:47:50 -0700 Subject: [PATCH] Add the option to pin the bookmarks drawer. https://redmine.stoutner.com/issues/932 --- app/src/main/assets/de/about_licenses.html | 29 +-- app/src/main/assets/en/about_licenses.html | 23 ++- app/src/main/assets/es/about_licenses.html | 23 ++- app/src/main/assets/fr/about_licenses.html | 23 ++- app/src/main/assets/it/about_licenses.html | 23 ++- .../main/assets/pt-rBR/about_licenses.html | 23 ++- app/src/main/assets/ru/about_licenses.html | 23 ++- .../assets/shared_images/push_pin_filled.svg | 30 ++++ .../push_pin_filled_selected.svg | 62 +++++++ .../assets/shared_images/sort_selected.svg | 2 +- app/src/main/assets/tr/about_licenses.html | 23 ++- .../activities/MainWebViewActivity.java | 169 +++++------------- app/src/main/res/drawable/move_to_folder.xml | 4 +- .../main/res/drawable/move_to_folder_blue.xml | 4 +- app/src/main/res/drawable/pin.xml | 13 ++ app/src/main/res/drawable/pin_selected.xml | 35 ++++ app/src/main/res/drawable/sort.xml | 2 +- app/src/main/res/drawable/sort_selected.xml | 4 +- .../bookmarks_drawer_bottom_appbar.xml | 28 ++- .../bookmarks_drawer_top_appbar.xml | 21 ++- .../layout/bookmarks_drawer_bottom_appbar.xml | 21 ++- .../layout/bookmarks_drawer_top_appbar.xml | 21 ++- app/src/main/res/values/strings.xml | 7 +- 23 files changed, 389 insertions(+), 224 deletions(-) create mode 100644 app/src/main/assets/shared_images/push_pin_filled.svg create mode 100644 app/src/main/assets/shared_images/push_pin_filled_selected.svg create mode 100644 app/src/main/res/drawable/pin.xml create mode 100644 app/src/main/res/drawable/pin_selected.xml diff --git a/app/src/main/assets/de/about_licenses.html b/app/src/main/assets/de/about_licenses.html index d14a9495..39e5a15f 100644 --- a/app/src/main/assets/de/about_licenses.html +++ b/app/src/main/assets/de/about_licenses.html @@ -59,36 +59,42 @@

com.stoutner.privacybrowser.views.CheckedLinearLayout ist eine abgeänderte Version einer Klasse, die im Quelltext von Android Camera enthalten ist. Die Original-Datei wurde unter der Apache Lizenz 2.0 veröffentlicht. - Änderungen © 2019 Soren Stoutner. + Änderungen 2019 Soren Stoutner. Die geänderte Datei wird unter der GPLv3+-Lizenz veröffentlicht.

Icons:

are derived from security and language, which are part of the Android Material icon set and are released under the Apache License 2.0. - The full text of the license is below. Modifications copyright © 2016 Soren Stoutner. + The full text of the license is below. Modifications copyright 2016 Soren Stoutner. The resulting images are released under the GPLv3+ license.

is derived from elements of folder and exit_to_app, which are part of the Android Material icon set and are released under the Apache License 2.0. - Modifications copyright © 2017 Soren Stoutner. + Modifications copyright 2017, 2022 Soren Stoutner. The resulting image is released under the GPLv3+ license.

is derived from elements of bookmark and create_new_folder, which are part of the Android Material icon set and are released under the Apache License 2.0. - Modifications copyright © 2017 Soren Stoutner. + Modifications copyright 2017, 2022 Soren Stoutner. The resulting image is released under the GPLv3+ license.

is derived from create_new_folder, which is part of the Android Material icon set and is released under the Apache License 2.0. - Modifications copyright © 2017 Soren Stoutner. + Modifications copyright 2017, 2022 Soren Stoutner. The resulting image is released under the GPLv3+ license.

-

is derived from exit_to_app, which is part of the Android Material icon set - and is released under the Apache License 2.0. Modifications copyright © 2017 Soren Stoutner. +

is derived from exit_to_app, + which is part of the Android Material icon set + and is released under the Apache License 2.0. Modifications copyright 2017, 2022 Soren Stoutner. The resulting image is released under the GPLv3+ license.

-

is derived from compare, which is part of the Android Material icon set - and is released under the Apache License 2.0. Modifications copyright © 2017 Soren Stoutner. +

is derived from compare, + which is part of the Android Material icon set and is released under the Apache License 2.0. + Modifications copyright 2017, 2022 Soren Stoutner. The resulting image is released under the GPLv3+ license.

is derived from sort, which is part of the Android Material icon set - and is released under the Apache License 2.0. Modifications copyright © 2019 Soren Stoutner. + and is released under the Apache License 2.0. Modifications copyright 2019, 2022 Soren Stoutner. + The resulting image is released under the GPLv3+ license.

+

is derived from push_pin_selected, + which is part of the Android Material icon set and is released under the Apache License 2.0. + Modifications copyright 2019-2020, 2022 Soren Stoutner. The resulting image is released under the GPLv3+ license.

cookie was created by Google. It is released under the Apache License 2.0 @@ -138,10 +144,11 @@

lock.

map.

more.

-

new releases.

+

new_releases.

open_in_browser.

payment.

payments_rounded.

+

push_pin_filled.

question_answer.

refresh.

save.

diff --git a/app/src/main/assets/en/about_licenses.html b/app/src/main/assets/en/about_licenses.html index 0f08c13b..930a6950 100644 --- a/app/src/main/assets/en/about_licenses.html +++ b/app/src/main/assets/en/about_licenses.html @@ -56,38 +56,42 @@

com.stoutner.privacybrowser.views.CheckedLinearLayout is a modified version of a class contained in the Android Camera source code. The original file was released under the Apache License 2.0. - Modifications copyright © 2019 Soren Stoutner. + Modifications copyright 2019 Soren Stoutner. The modified file is released under the GPLv3+ license.

Icons

are derived from security and language, which are part of the Android Material icon set and are released under the Apache License 2.0. - The full text of the license is below. Modifications copyright © 2016 Soren Stoutner. + The full text of the license is below. Modifications copyright 2016 Soren Stoutner. The resulting images are released under the GPLv3+ license.

is derived from elements of folder and exit_to_app, which are part of the Android Material icon set and are released under the Apache License 2.0. - Modifications copyright © 2017 Soren Stoutner. + Modifications copyright 2017, 2022 Soren Stoutner. The resulting image is released under the GPLv3+ license.

is derived from elements of bookmark and create_new_folder, which are part of the Android Material icon set and are released under the Apache License 2.0. - Modifications copyright © 2017 Soren Stoutner. + Modifications copyright 2017, 2022 Soren Stoutner. The resulting image is released under the GPLv3+ license.

is derived from create_new_folder, which is part of the Android Material icon set and is released under the Apache License 2.0. - Modifications copyright © 2017 Soren Stoutner. + Modifications copyright 2017, 2022 Soren Stoutner. The resulting image is released under the GPLv3+ license.

is derived from exit_to_app, which is part of the Android Material icon set and is released under the Apache License 2.0. - Modifications copyright © 2017 Soren Stoutner. + Modifications copyright 2017, 2022 Soren Stoutner. The resulting image is released under the GPLv3+ license.

is derived from compare, which is part of the Android Material icon set and is released under the Apache License 2.0. - Modifications copyright © 2017 Soren Stoutner. + Modifications copyright 2017, 2022 Soren Stoutner. The resulting image is released under the GPLv3+ license.

is derived from sort, which is part of the Android Material icon set - and is released under the Apache License 2.0. Modifications copyright © 2019 Soren Stoutner. + and is released under the Apache License 2.0. Modifications copyright 2019, 2022 Soren Stoutner. + The resulting image is released under the GPLv3+ license.

+

is derived from push_pin_selected, + which is part of the Android Material icon set and is released under the Apache License 2.0. + Modifications copyright 2019-2020, 2022 Soren Stoutner. The resulting image is released under the GPLv3+ license.

cookie was created by Google. It is released under the Apache License 2.0 @@ -136,10 +140,11 @@

lock.

map.

more.

-

new releases.

+

new_releases.

open_in_browser.

payment.

payments_rounded.

+

push_pin_filled.

question_answer.

refresh.

save.

diff --git a/app/src/main/assets/es/about_licenses.html b/app/src/main/assets/es/about_licenses.html index 704c62bd..41feb7d2 100644 --- a/app/src/main/assets/es/about_licenses.html +++ b/app/src/main/assets/es/about_licenses.html @@ -58,37 +58,41 @@

com.stoutner.privacybrowser.views.CheckedLinearLayout es una versión modificada de una clase incluida en el código fuente de Android Camera. El archivo original se liberó bajo la Licencia Apache 2.0. - Copyright de modificaciones © 2019 Soren Stoutner. + Copyright de modificaciones 2019 Soren Stoutner. El archivo modificado se libera bajo la licencia GPLv3+.

Iconos

derivan de security y de language, que son parte del conjunto de iconos Android Material y son liberados bajo la Licencia Apache 2.0. - El texto completo de la licencia se encuentra debajo. Copyright de modificaciones © 2016 Soren Stoutner. + El texto completo de la licencia se encuentra debajo. Copyright de modificaciones 2016 Soren Stoutner. Las imágenes resultantes se liberan bajo la licencia GPLv3+.

deriva de elementos de folder y exit_to_app, que son parte del conjunto de iconos Android Material y son liberados bajo la Licencia Apache 2.0. - Copyright de modificaciones © 2017 Soren Stoutner. + Copyright de modificaciones 2017, 2022 Soren Stoutner. La imagen resultante se libera bajo la licencia GPLv3+.

deriva de elementos de bookmark y create_new_folder, que son parte del conjunto de iconos Android Material y son liberados bajo la Licencia Apache 2.0. - Copyright de modificaciones © 2017 Soren Stoutner. + Copyright de modificaciones 2017, 2022 Soren Stoutner. La imagen resultante se libera bajo la licencia GPLv3+.

deriva de create_new_folder, que es parte del conjunto de iconos Android Material y es liberado bajo la Licencia Apache 2.0. - Copyright de modificaciones © 2017 Soren Stoutner. + Copyright de modificaciones 2017, 2022 Soren Stoutner. La imagen resultante se libera bajo la licencia GPLv3+.

deriva de exit_to_app, que es parte del conjunto de iconos Android Material y es liberado bajo la Licencia Apache 2.0. - Copyright de modificaciones © 2017 Soren Stoutner. + Copyright de modificaciones 2017, 2022 Soren Stoutner. La imagen resultante se libera bajo la licencia GPLv3+.

deriva de compare, que es parte del conjunto de iconos Android Material y es liberado bajo la Licencia Apache 2.0. - Copyright de modificaciones © 2017 Soren Stoutner. + Copyright de modificaciones 2017, 2022 Soren Stoutner. La imagen resultante se libera bajo la licencia GPLv3+.

deriva de sort, que es parte del conjunto de iconos Android Material - y es liberado bajo la Licencia Apache 2.0. Copyright de modificaciones © 2019 Soren Stoutner. + y es liberado bajo la Licencia Apache 2.0. Copyright de modificaciones 2019, 2022 Soren Stoutner. + La imagen resultante se libera bajo la licencia GPLv3+.

+

deriva de push_pin_selected, + que es parte del conjunto de iconos Android Material y es liberado bajo la Licencia Apache 2.0. + Copyright de modificaciones 2019-2020, 2022 Soren Stoutner. La imagen resultante se libera bajo la licencia GPLv3+.

cookie fue creado por Google. Es liberado bajo la licencia Apache 2.0 @@ -140,10 +144,11 @@

lock.

map.

more.

-

new releases.

+

new_releases.

open_in_browser.

payment.

payments_rounded.

+

push_pin_filled.

question_answer.

refresh.

save.

diff --git a/app/src/main/assets/fr/about_licenses.html b/app/src/main/assets/fr/about_licenses.html index 02367094..dcdf004d 100644 --- a/app/src/main/assets/fr/about_licenses.html +++ b/app/src/main/assets/fr/about_licenses.html @@ -58,39 +58,43 @@

com.stoutner.privacybrowser.views.CheckedLinearLayout est une version modifiée d'une classe contenue dans le code source de la Caméra Android. Le fichier d'origine a été publié sous la Licence Apache 2.0. - Modifications copyright © 2019 Soren Stoutner. + Modifications copyright 2019 Soren Stoutner. Le fichier modifié est publié sous la licence GPLv3+.

Icônes

sont dérivés de security et de language, qui font partie de l'ensemble d'icônes Matériel Android et sont publiés sous la Licence Apache 2.0. - Le texte complet de la licence est ci-dessous. Modifications copyright © 2016 Soren Stoutner. + Le texte complet de la licence est ci-dessous. Modifications copyright 2016 Soren Stoutner. Les images résultantes sont publiées sous la licence GPLv3+.

est dérivé des éléments folder et exit_to_app, qui font partie de l'ensemble d'icônes Matériel Android et sont publiés sous Licence Apache 2.0. - Modifications copyright © 2017 Soren Stoutner. + Modifications copyright 2017, 2022 Soren Stoutner. L'image résultante est publiée sous la licence GPLv3+.

est dérivé des éléments bookmark et create_new_folder, qui font partie de l'ensemble d'icônes Matériel Android et sont publiés sous Licence Apache 2.0. - Modifications copyright © 2017 Soren Stoutner. + Modifications copyright 2017, 2022 Soren Stoutner. L'image résultante est publiée sous la licence GPLv3+.

est dérivée de l'élément create_new_folder, qui fait partie de l'ensemble d'icônes Matériel Android et sont publiés sous Licence Apache 2.0. - Modifications copyright © 2017 Soren Stoutner. + Modifications copyright 2017, 2022 Soren Stoutner. L'image résultante est publiée sous la licence GPLv3+.

est dérivée de l'élément exit_to_app, qui fait partie de l'ensemble d'icônes Matériel Android et sont publiés sous Licence Apache 2.0. - Modifications copyright © 2017 Soren Stoutner. + Modifications copyright 2017, 2022 Soren Stoutner. L'image résultante est publiée sous la licence GPLv3+.

est dérivée de l'élément compare, qui fait partie de l'ensemble d'icônes Matériel Android et sont publiés sous Licence Apache 2.0. - Modifications copyright © 2017 Soren Stoutner. + Modifications copyright 2017, 2022 Soren Stoutner. L'image résultante est publiée sous la licence GPLv3+.

est dérivée de l'élément sort, qui fait partie de l'ensemble d'icônes Matériel Android et sont publiés sous Licence Apache 2.0. - Modifications copyright © 2019 Soren Stoutner. + Modifications copyright 2019, 2022 Soren Stoutner. + L'image résultante est publiée sous la licence GPLv3+.

+

est dérivée de l'élément push_pin_selected, + qui fait partie de l'ensemble d'icônes Matériel Android et sont publiés sous Licence Apache 2.0. + Modifications copyright 2019-2020, 2022 Soren Stoutner. L'image résultante est publiée sous la licence GPLv3+.

cookie a été créé par Google. Il est publié sous la Licence Apache 2.0 @@ -142,10 +146,11 @@

lock.

map.

more.

-

new releases.

+

new_releases.

open_in_browser.

payment.

payments_rounded.

+

push_pin_filled.

question_answer.

refresh.

save.

diff --git a/app/src/main/assets/it/about_licenses.html b/app/src/main/assets/it/about_licenses.html index e6579036..f2366b2a 100644 --- a/app/src/main/assets/it/about_licenses.html +++ b/app/src/main/assets/it/about_licenses.html @@ -63,38 +63,42 @@

com.stoutner.privacybrowser.views.CheckedLinearLayout è la versione modificata di una classe contenuta nel codice sorgente della Fotocamera Android. Il file originale è stato rilasciato sotto la Licenza Apache 2.0. - Copyright delle modifiche © 2019 Soren Stoutner. + Copyright delle modifiche 2019 Soren Stoutner. Il file modificato è rilasciato sotto la Licenza GPLv3+.

Icone

sono state derivate da security e language, che fanno parte dell'Android Material icon set e sono state rilasciate sotto Licenza Apache 2.0. - Il testo completo della Licenza è riportato di seguito. Copyright delle modifiche © 2016 Soren Stoutner. + Il testo completo della Licenza è riportato di seguito. Copyright delle modifiche 2016 Soren Stoutner. Le immagini risultanti sono rilasciate sotto Licenza GPLv3+.

è stata derivata da elementi di folder e di exit_to_app, che fanno parte dell'Android Material icon set e sono state rilasciate sotto Licenza Apache 2.0. - Copyright delle modifiche © 2017 Soren Stoutner. + Copyright delle modifiche 2017, 2020 Soren Stoutner. L'immagine risultante è rilasciata sotto Licenza GPLv3+.

è stata derivata da elementi di bookmark e di create_new_folder, che fanno parte dell'Android Material icon set e sono state rilasciate sotto Licenza Apache 2.0. - Copyright delle modifiche © 2017 Soren Stoutner. + Copyright delle modifiche 2017, 2020 Soren Stoutner. L'immagine risultante è rilasciata sotto Licenza GPLv3+.

è stata derivata da create_new_folder, che fa parte dell'Android Material icon set ed è stata rilasciata sotto Licenza Apache 2.0. - Copyright delle modifiche © 2017 Soren Stoutner. + Copyright delle modifiche 2017, 2020 Soren Stoutner. L'immagine risultante è rilasciata sotto Licenza GPLv3+.

è stata derivata da exit_to_app, che fa parte dell'Android Material icon set ed è stata rilasciata sotto Licenza Apache 2.0. - Copyright delle modifiche © 2017 Soren Stoutner. + Copyright delle modifiche 2017, 2020 Soren Stoutner. L'immagine risultante è rilasciata sotto Licenza GPLv3+.

è stata derivata da compare, che fa parte dell'Android Material icon set ed è stata rilasciata sotto Licenza Apache 2.0. - Copyright delle modifiche © 2017 Soren Stoutner. + Copyright delle modifiche 2017, 2020 Soren Stoutner. L'immagine risultante è rilasciata sotto Licenza GPLv3+.

è stata derivata da sort, che fa parte dell'Android Material icon set ed è stata rilasciata sotto Licenza Apache 2.0. - Copyright delle modifiche © 2019 Soren Stoutner. + Copyright delle modifiche 2019, 2020 Soren Stoutner. + L'immagine risultante è rilasciata sotto Licenza GPLv3+.

+

è stata derivata da push_pin_selected, + che fa parte dell'Android Material icon set ed è stata rilasciata sotto Licenza Apache 2.0. + Copyright delle modifiche 2019-2020, 2020 Soren Stoutner. L'immagine risultante è rilasciata sotto Licenza GPLv3+.

cookie è stata creata da Google. E' stata rilasciata con Licenza Apache 2.0 @@ -144,10 +148,11 @@

lock.

map.

more.

-

new releases.

+

new_releases.

open_in_browser.

payment.

payments_rounded.

+

push_pin_filled.

question_answer.

refresh.

save.

diff --git a/app/src/main/assets/pt-rBR/about_licenses.html b/app/src/main/assets/pt-rBR/about_licenses.html index a4ff073d..5c94756f 100644 --- a/app/src/main/assets/pt-rBR/about_licenses.html +++ b/app/src/main/assets/pt-rBR/about_licenses.html @@ -58,38 +58,42 @@

com.stoutner.privacybrowser.views.CheckedLinearLayout é uma versão modificada de uma classe contida no código-fonte da câmera Android. O arquivo original foi lançado sob a licença Apache 2.0. - Modificações de direitos autorais © 2019 Soren Stoutner. + Modificações de direitos autorais 2019 Soren Stoutner. O arquivo modificado é liberado sob a licença GPLv3+.

Icons

are derived from security and language, which are part of the Android Material icon set and are released under the Apache License 2.0. - The full text of the license is below. Modifications copyright © 2016 Soren Stoutner. + The full text of the license is below. Modifications copyright 2016 Soren Stoutner. The resulting images are released under the GPLv3+ license.

is derived from elements of folder and exit_to_app, which are part of the Android Material icon set and are released under the Apache License 2.0. - Modifications copyright © 2017 Soren Stoutner. + Modifications copyright 2017, 2022 Soren Stoutner. The resulting image is released under the GPLv3+ license.

is derived from elements of bookmark and create_new_folder, which are part of the Android Material icon set and are released under the Apache License 2.0. - Modifications copyright © 2017 Soren Stoutner. + Modifications copyright 2017, 2022 Soren Stoutner. The resulting image is released under the GPLv3+ license.

is derived from create_new_folder, which is part of the Android Material icon set and is released under the Apache License 2.0. - Modifications copyright © 2017 Soren Stoutner. + Modifications copyright 2017, 2022 Soren Stoutner. The resulting image is released under the GPLv3+ license.

is derived from exit_to_app, which is part of the Android Material icon set and is released under the Apache License 2.0. - Modifications copyright © 2017 Soren Stoutner. + Modifications copyright 2017, 2022 Soren Stoutner. The resulting image is released under the GPLv3+ license.

is derived from compare, which is part of the Android Material icon set and is released under the Apache License 2.0. - Modifications copyright © 2017 Soren Stoutner. + Modifications copyright 2017, 2022 Soren Stoutner. The resulting image is released under the GPLv3+ license.

is derived from sort, which is part of the Android Material icon set - and is released under the Apache License 2.0. Modifications copyright © 2019 Soren Stoutner. + and is released under the Apache License 2.0. Modifications copyright 2019, 2022 Soren Stoutner. + The resulting image is released under the GPLv3+ license.

+

is derived from push_pin_selected, + which is part of the Android Material icon set and is released under the Apache License 2.0. + Modifications copyright 2019-2020, 2022 Soren Stoutner. The resulting image is released under the GPLv3+ license.

cookie was created by Google. It is released under the Apache License 2.0 @@ -138,10 +142,11 @@

lock.

map.

more.

-

new releases.

+

new_releases.

open_in_browser.

payment.

payments_rounded.

+

push_pin_filled.

question_answer.

refresh.

save.

diff --git a/app/src/main/assets/ru/about_licenses.html b/app/src/main/assets/ru/about_licenses.html index 0c1ecfda..0c145491 100644 --- a/app/src/main/assets/ru/about_licenses.html +++ b/app/src/main/assets/ru/about_licenses.html @@ -56,38 +56,42 @@

com.stoutner.privacybrowser.views.CheckedLinearLayout является модифицированной версией класса, содержащегося в исходном коде Android Camera. Оригинальный файл был выпущен под лицензией Apache 2.0. - Модификации авторских прав © 2019 Soren Stoutner. + Модификации авторских прав 2019 Soren Stoutner. Модифицированный файл выпущен под лицензией GPLv3+.

Иконки

являются производными от security и language, которые являются частью Android Material icon set и выпущены под Apache License 2.0. Полный текст лицензии приведен ниже. - Модификации авторских прав © 2016 Soren Stoutner. + Модификации авторских прав 2016 Soren Stoutner. Полученные изображения выпущены под лицензией GPLv3+.

являются производными от folder и exit_to_app, которые являются частью Android Material icon set и выпущены под Apache License 2.0. - Модификации авторских прав © 2017 Soren Stoutner. + Модификации авторских прав 2017, 2022 Soren Stoutner. Полученные изображения выпущены под лицензией GPLv3+.

являются производными от bookmark и create_new_folder, которые являются частью Android Material icon set и выпущены под Apache License 2.0. - Модификации авторских прав © 2017 Soren Stoutner. + Модификации авторских прав 2017, 2022 Soren Stoutner. Полученные изображения выпущены под лицензией GPLv3+.

являются производными от create_new_folder, которые являются частью Android Material icon set и выпущены под Apache License 2.0. - Модификации авторских прав © 2017 Soren Stoutner. + Модификации авторских прав 2017, 2022 Soren Stoutner. Полученные изображения выпущены под лицензией GPLv3+.

являются производными от exit_to_app, которые являются частью Android Material icon set и выпущены под Apache License 2.0. - Модификации авторских прав © 2017 Soren Stoutner. + Модификации авторских прав 2017, 2022 Soren Stoutner. Полученные изображения выпущены под лицензией GPLv3+.

являются производными от compare, которые являются частью Android Material icon set и выпущены под Apache License 2.0. - Модификации авторских прав © 2017 Soren Stoutner. + Модификации авторских прав 2017, 2022 Soren Stoutner. Полученные изображения выпущены под лицензией GPLv3+.

являются производными от sort, которые являются частью Android Material icon set и выпущены под Apache License 2.0. - Модификации авторских прав © 2019 Soren Stoutner. + Модификации авторских прав 2019, 2022 Soren Stoutner. + Полученные изображения выпущены под лицензией GPLv3+.

+

являются производными от push_pin_selected, + которые являются частью Android Material icon set и выпущены под Apache License 2.0. + Модификации авторских прав 2019-2020, 2022 Soren Stoutner. Полученные изображения выпущены под лицензией GPLv3+.

cookie были созданы Google. Они выпущены под Apache License 2.0 @@ -136,10 +140,11 @@

lock.

map.

more.

-

new releases.

+

new_releases.

open_in_browser.

payment.

payments_rounded.

+

push_pin_filled.

question_answer.

refresh.

save.

diff --git a/app/src/main/assets/shared_images/push_pin_filled.svg b/app/src/main/assets/shared_images/push_pin_filled.svg new file mode 100644 index 00000000..1918c8e7 --- /dev/null +++ b/app/src/main/assets/shared_images/push_pin_filled.svg @@ -0,0 +1,30 @@ + + + + + + + + diff --git a/app/src/main/assets/shared_images/push_pin_filled_selected.svg b/app/src/main/assets/shared_images/push_pin_filled_selected.svg new file mode 100644 index 00000000..b5657395 --- /dev/null +++ b/app/src/main/assets/shared_images/push_pin_filled_selected.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/assets/shared_images/sort_selected.svg b/app/src/main/assets/shared_images/sort_selected.svg index daedfac7..ccb7ad63 100644 --- a/app/src/main/assets/shared_images/sort_selected.svg +++ b/app/src/main/assets/shared_images/sort_selected.svg @@ -47,8 +47,8 @@ diff --git a/app/src/main/assets/tr/about_licenses.html b/app/src/main/assets/tr/about_licenses.html index 9f11f96c..22a00de8 100644 --- a/app/src/main/assets/tr/about_licenses.html +++ b/app/src/main/assets/tr/about_licenses.html @@ -57,38 +57,42 @@ Android Kamera kaynak kodunda bulunan bir sınıfın modifiye edilmiş bir sürümüdür. Orijinal dosya Apache License 2.0 altında yayınlandı. - Değişikliklerin telif hakkı © 2019 Soren Stoutner. + Değişikliklerin telif hakkı 2019 Soren Stoutner. Değiştirilen dosya GPLv3+ lisansı altında yayınlandı.

Simgeler

Apache License 2.0 altında yayınlanan ve Android Material simge setinin bir parçası olan security ve language'den elde edilmiştir. - Lisansın tüm metni aşağıdadır. Değişikliklerin telif hakkı © 2016 Soren Stoutner. + Lisansın tüm metni aşağıdadır. Değişikliklerin telif hakkı 2016 Soren Stoutner. Ortaya çıkan görüntüler GPLv3+ lisansı altında yayınlandı.

Apache License 2.0 altında yayınlanan ve Android Material simge setinin bir parçası olan folder ve exit_to_app elementlerinden elde edilmiştir. - Değişikliklerin telif hakkı © 2017 Soren Stoutner. + Değişikliklerin telif hakkı 2017, 2022 Soren Stoutner. Ortaya çıkan görüntü GPLv3+ lisansı altında yayınlandı.

Apache License 2.0 altında yayınlanan ve Android Material simge setinin bir parçası olan bookmarks ve create_new_folder elementlerinden elde edilmiştir. - Değişikliklerin telif hakkı © 2017 Soren Stoutner. + Değişikliklerin telif hakkı 2017, 2022 Soren Stoutner. Ortaya çıkan görüntü GPLv3+ lisansı altında yayınlandı.

Apache License 2.0 altında yayınlanan ve Android Material simge setinin bir parçası olan create_new_folder'dan elde edilmiştir. - Değişikliklerin telif hakkı © 2017 Soren Stoutner. + Değişikliklerin telif hakkı 2017, 2022 Soren Stoutner. Ortaya çıkan görüntü GPLv3+ lisansı altında yayınlandı.

Apache License 2.0 altında yayınlanan ve Android Material simge setinin bir parçası olan exit_to_app'ten elde edilmiştir. - Değişikliklerin telif hakkı © 2017 Soren Stoutner. + Değişikliklerin telif hakkı 2017, 2022 Soren Stoutner. Ortaya çıkan görüntü GPLv3+ lisansı altında yayınlandı.

Apache License 2.0 altında yayınlanan ve Android Material simge setinin bir parçası olan compare'den elde edilmiştir. - Değişikliklerin telif hakkı © 2017 Soren Stoutner. + Değişikliklerin telif hakkı 2017, 2022 Soren Stoutner. Ortaya çıkan görüntü GPLv3+ lisansı altında yayınlandı.

Apache License 2.0 altında yayınlanan ve Android Material simge setinin bir parçası olan sort'dan elde edilmiştir. - Değişikliklerin telif hakkı © 2019 Soren Stoutner. + Değişikliklerin telif hakkı 2019, 2022 Soren Stoutner. + Ortaya çıkan görüntü GPLv3+ lisansı altında yayınlandı.

+

Apache License 2.0 altında yayınlanan ve + Android Material simge setinin bir parçası olan push_pin_selected'dan elde edilmiştir. + Değişikliklerin telif hakkı 2019-2020, 2022 Soren Stoutner. Ortaya çıkan görüntü GPLv3+ lisansı altında yayınlandı.

cookie Google tarafından oluşturuldu. Apache License 2.0 altında yayınlandı ve Material Design @@ -137,10 +141,11 @@

lock.

map.

more.

-

new releases.

+

new_releases.

open_in_browser.

payment.

payments_rounded.

+

push_pin_filled.

question_answer.

refresh.

save.

diff --git a/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java b/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java index 3d0013e4..2f41688a 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java +++ b/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java @@ -137,7 +137,6 @@ import com.stoutner.privacybrowser.dataclasses.PendingDialog; import com.stoutner.privacybrowser.dialogs.CreateBookmarkDialog; import com.stoutner.privacybrowser.dialogs.CreateBookmarkFolderDialog; import com.stoutner.privacybrowser.dialogs.CreateHomeScreenShortcutDialog; -import com.stoutner.privacybrowser.dialogs.EditBookmarkFolderDialog; import com.stoutner.privacybrowser.dialogs.FontSizeDialog; import com.stoutner.privacybrowser.dialogs.HttpAuthenticationDialog; import com.stoutner.privacybrowser.dialogs.OpenDialog; @@ -185,9 +184,8 @@ import java.util.concurrent.Executors; import kotlin.Pair; public class MainWebViewActivity extends AppCompatActivity implements CreateBookmarkDialog.CreateBookmarkListener, CreateBookmarkFolderDialog.CreateBookmarkFolderListener, - EditBookmarkFolderDialog.EditBookmarkFolderListener, FontSizeDialog.UpdateFontSizeListener, NavigationView.OnNavigationItemSelectedListener, OpenDialog.OpenListener, - PinnedMismatchDialog.PinnedMismatchListener, PopulateBlocklists.PopulateBlocklistsListener, SaveDialog.SaveListener, UrlHistoryDialog.NavigateHistoryListener, - WebViewTabFragment.NewTabListener { + FontSizeDialog.UpdateFontSizeListener, NavigationView.OnNavigationItemSelectedListener, OpenDialog.OpenListener, PinnedMismatchDialog.PinnedMismatchListener, + PopulateBlocklists.PopulateBlocklistsListener, SaveDialog.SaveListener, UrlHistoryDialog.NavigateHistoryListener, WebViewTabFragment.NewTabListener { // Define the public static variables. public static final ExecutorService executorService = Executors.newFixedThreadPool(4); @@ -216,10 +214,11 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook public final static int BROWSE_OPEN_REQUEST_CODE = 1; // Define the saved instance state constants. + private final String BOOKMARKS_DRAWER_PINNED = "bookmarks_drawer_pinned"; + private final String PROXY_MODE = "proxy_mode"; private final String SAVED_STATE_ARRAY_LIST = "saved_state_array_list"; private final String SAVED_NESTED_SCROLL_WEBVIEW_STATE_ARRAY_LIST = "saved_nested_scroll_webview_state_array_list"; private final String SAVED_TAB_POSITION = "saved_tab_position"; - private final String PROXY_MODE = "proxy_mode"; // Define the saved instance state variables. private ArrayList savedStateArrayList; @@ -260,9 +259,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // `bookmarksCursorAdapter` is used in `onCreateBookmark()`, `onCreateBookmarkFolder()` `onSaveEditBookmark()`, `onSaveEditBookmarkFolder()`, and `loadBookmarksFolder()`. private CursorAdapter bookmarksCursorAdapter; - // `oldFolderNameString` is used in `onCreate()` and `onSaveEditBookmarkFolder()`. - private String oldFolderNameString; - // `fileChooserCallback` is used in `onCreate()` and `onActivityResult()`. private ValueCallback fileChooserCallback; @@ -278,6 +274,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook private SanitizeUrlHelper sanitizeUrlHelper; // Declare the class variables + private boolean bookmarksDrawerPinned; private boolean bottomAppBar; private boolean displayAdditionalAppBarIcons; private boolean displayingFullScreenVideo; @@ -301,19 +298,20 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook private String saveUrlString = ""; // Declare the class views. - private FrameLayout rootFrameLayout; - private DrawerLayout drawerLayout; - private CoordinatorLayout coordinatorLayout; - private Toolbar toolbar; - private RelativeLayout urlRelativeLayout; - private EditText urlEditText; private ActionBar actionBar; + private CoordinatorLayout coordinatorLayout; + private ImageView bookmarksDrawerPinnedImageView; + private DrawerLayout drawerLayout; private LinearLayout findOnPageLinearLayout; + private FrameLayout fullScreenVideoFrameLayout; + private FrameLayout rootFrameLayout; + private SwipeRefreshLayout swipeRefreshLayout; private LinearLayout tabsLinearLayout; private TabLayout tabLayout; - private SwipeRefreshLayout swipeRefreshLayout; + private Toolbar toolbar; + private EditText urlEditText; + private RelativeLayout urlRelativeLayout; private ViewPager webViewPager; - private FrameLayout fullScreenVideoFrameLayout; // Declare the class menus. private Menu optionsMenu; @@ -488,6 +486,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // Check to see if the activity has been restarted. if (savedInstanceState != null) { // Store the saved instance state variables. + bookmarksDrawerPinned = savedInstanceState.getBoolean(BOOKMARKS_DRAWER_PINNED); savedStateArrayList = savedInstanceState.getParcelableArrayList(SAVED_STATE_ARRAY_LIST); savedNestedScrollWebViewStateArrayList = savedInstanceState.getParcelableArrayList(SAVED_NESTED_SCROLL_WEBVIEW_STATE_ARRAY_LIST); savedTabPosition = savedInstanceState.getInt(SAVED_TAB_POSITION); @@ -550,6 +549,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook swipeRefreshLayout = findViewById(R.id.swiperefreshlayout); webViewPager = findViewById(R.id.webviewpager); NavigationView navigationView = findViewById(R.id.navigationview); + bookmarksDrawerPinnedImageView = findViewById(R.id.bookmarks_drawer_pinned_imageview); fullScreenVideoFrameLayout = findViewById(R.id.full_screen_video_framelayout); // Get a handle for the navigation menu. @@ -608,6 +608,9 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook proxyHelper = new ProxyHelper(); sanitizeUrlHelper = new SanitizeUrlHelper(); + // Update the bookmarks drawer pinned image view. + updateBookmarksDrawerPinnedImageView(); + // Initialize the app. initializeApp(); @@ -924,10 +927,11 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook int currentTabPosition = tabLayout.getSelectedTabPosition(); // Store the saved states in the bundle. + savedInstanceState.putBoolean(BOOKMARKS_DRAWER_PINNED, bookmarksDrawerPinned); + savedInstanceState.putString(PROXY_MODE, proxyMode); savedInstanceState.putParcelableArrayList(SAVED_STATE_ARRAY_LIST, savedStateArrayList); savedInstanceState.putParcelableArrayList(SAVED_NESTED_SCROLL_WEBVIEW_STATE_ARRAY_LIST, savedNestedScrollWebViewStateArrayList); savedInstanceState.putInt(SAVED_TAB_POSITION, currentTabPosition); - savedInstanceState.putString(PROXY_MODE, proxyMode); } @Override @@ -2714,97 +2718,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook bookmarksListView.setSelection(0); } - @Override - public void onSaveBookmarkFolder(DialogFragment dialogFragment, int selectedFolderDatabaseId, @NonNull Bitmap favoriteIconBitmap) { - // Remove the incorrect lint warning below that the dialog fragment might be null. - assert dialogFragment != null; - - // Get the dialog. - Dialog dialog = dialogFragment.getDialog(); - - // Remove the incorrect lint warning below that the dialog might be null. - assert dialog != null; - - // Get handles for the views from the dialog. - RadioButton currentFolderIconRadioButton = dialog.findViewById(R.id.current_icon_radiobutton); - RadioButton defaultFolderIconRadioButton = dialog.findViewById(R.id.default_icon_radiobutton); - ImageView defaultFolderIconImageView = dialog.findViewById(R.id.default_icon_imageview); - EditText editFolderNameEditText = dialog.findViewById(R.id.folder_name_edittext); - - // Get the new folder name. - String newFolderNameString = editFolderNameEditText.getText().toString(); - - // Check if the favorite icon has changed. - if (currentFolderIconRadioButton.isChecked()) { // Only the name has changed. - // Update the name in the database. - bookmarksDatabaseHelper.updateFolder(selectedFolderDatabaseId, oldFolderNameString, newFolderNameString); - } else if (!currentFolderIconRadioButton.isChecked() && newFolderNameString.equals(oldFolderNameString)) { // Only the icon has changed. - // Create the new folder icon Bitmap. - Bitmap folderIconBitmap; - - // Populate the new folder icon bitmap. - if (defaultFolderIconRadioButton.isChecked()) { - // Get the default folder icon drawable. - Drawable folderIconDrawable = defaultFolderIconImageView.getDrawable(); - - // Convert the folder icon drawable to a bitmap drawable. - BitmapDrawable folderIconBitmapDrawable = (BitmapDrawable) folderIconDrawable; - - // Convert the folder icon bitmap drawable to a bitmap. - folderIconBitmap = folderIconBitmapDrawable.getBitmap(); - } else { // Use the `WebView` favorite icon. - // Copy the favorite icon bitmap to the folder icon bitmap. - folderIconBitmap = favoriteIconBitmap; - } - - // Create a folder icon byte array output stream. - ByteArrayOutputStream newFolderIconByteArrayOutputStream = new ByteArrayOutputStream(); - - // Convert the folder icon bitmap to a byte array. `0` is for lossless compression (the only option for a PNG). - folderIconBitmap.compress(Bitmap.CompressFormat.PNG, 0, newFolderIconByteArrayOutputStream); - - // Convert the folder icon byte array stream to a byte array. - byte[] newFolderIconByteArray = newFolderIconByteArrayOutputStream.toByteArray(); - - // Update the folder icon in the database. - bookmarksDatabaseHelper.updateFolder(selectedFolderDatabaseId, newFolderIconByteArray); - } else { // The folder icon and the name have changed. - // Get the new folder icon bitmap. - Bitmap folderIconBitmap; - if (defaultFolderIconRadioButton.isChecked()) { - // Get the default folder icon drawable. - Drawable folderIconDrawable = defaultFolderIconImageView.getDrawable(); - - // Convert the folder icon drawable to a bitmap drawable. - BitmapDrawable folderIconBitmapDrawable = (BitmapDrawable) folderIconDrawable; - - // Convert the folder icon bitmap drawable to a bitmap. - folderIconBitmap = folderIconBitmapDrawable.getBitmap(); - } else { // Use the `WebView` favorite icon. - // Copy the favorite icon bitmap to the folder icon bitmap. - folderIconBitmap = favoriteIconBitmap; - } - - // Create a folder icon byte array output stream. - ByteArrayOutputStream newFolderIconByteArrayOutputStream = new ByteArrayOutputStream(); - - // Convert the folder icon bitmap to a byte array. `0` is for lossless compression (the only option for a PNG). - folderIconBitmap.compress(Bitmap.CompressFormat.PNG, 0, newFolderIconByteArrayOutputStream); - - // Convert the folder icon byte array stream to a byte array. - byte[] newFolderIconByteArray = newFolderIconByteArrayOutputStream.toByteArray(); - - // Update the folder name and icon in the database. - bookmarksDatabaseHelper.updateFolder(selectedFolderDatabaseId, oldFolderNameString, newFolderNameString, newFolderIconByteArray); - } - - // Update the bookmarks cursor with the current contents of this folder. - bookmarksCursor = bookmarksDatabaseHelper.getBookmarksByDisplayOrder(currentBookmarksFolder); - - // Update the list view. - bookmarksCursorAdapter.changeCursor(bookmarksCursor); - } - // Process the results of a file browse. @Override public void onActivityResult(int requestCode, int resultCode, Intent returnedIntent) { @@ -3408,14 +3321,16 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // Load the bookmark URL. loadUrl(currentWebView, bookmarkCursor.getString(bookmarkCursor.getColumnIndexOrThrow(BookmarksDatabaseHelper.BOOKMARK_URL))); - // Close the bookmarks drawer. - drawerLayout.closeDrawer(GravityCompat.END); + // Close the bookmarks drawer if it is not pinned. + if (!bookmarksDrawerPinned) + drawerLayout.closeDrawer(GravityCompat.END); } - // Close the `Cursor`. + // Close the cursor. bookmarkCursor.close(); }); + // Handle long-presses on bookmarks. bookmarksListView.setOnItemLongClickListener((parent, view, position, id) -> { // Convert the database ID from `long` to `int`. int databaseId = (int) id; @@ -3433,8 +3348,8 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // Open each bookmark for (int i = 0; i < bookmarksCursor.getCount(); i++) { - // Load the bookmark in a new tab, moving to the tab for the first bookmark (i == 0). - addNewTab(bookmarksCursor.getString(bookmarksCursor.getColumnIndexOrThrow(BookmarksDatabaseHelper.BOOKMARK_URL)), (i == 0)); + // Load the bookmark in a new tab, moving to the tab for the first bookmark if the drawer is not pinned. + addNewTab(bookmarksCursor.getString(bookmarksCursor.getColumnIndexOrThrow(BookmarksDatabaseHelper.BOOKMARK_URL)), (!bookmarksDrawerPinned && (i == 0))); // Move to the next bookmark. bookmarksCursor.moveToNext(); @@ -3442,9 +3357,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // Close the cursor. bookmarksCursor.close(); - - // Close the bookmarks drawer. - drawerLayout.closeDrawer(GravityCompat.END); } else { // The bookmark is not a folder. // Get the bookmark cursor for this ID. Cursor bookmarkCursor = bookmarksDatabaseHelper.getBookmark(databaseId); @@ -3452,15 +3364,16 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // Move the bookmark cursor to the first row. bookmarkCursor.moveToFirst(); - // Load the bookmark in a new tab. - addNewTab(bookmarkCursor.getString(bookmarkCursor.getColumnIndexOrThrow(BookmarksDatabaseHelper.BOOKMARK_URL)), true); + // Load the bookmark in a new tab and move to the tab if the drawer is not pinned. + addNewTab(bookmarkCursor.getString(bookmarkCursor.getColumnIndexOrThrow(BookmarksDatabaseHelper.BOOKMARK_URL)), !bookmarksDrawerPinned); // Close the cursor. bookmarkCursor.close(); + } - // Close the bookmarks drawer. + // Close the bookmarks drawer if it is not pinned. + if (!bookmarksDrawerPinned) drawerLayout.closeDrawer(GravityCompat.END); - } // Consume the event. return true; @@ -4922,6 +4835,22 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook } } + public void toggleBookmarksDrawerPinned(View view) { + // Toggle the bookmarks drawer pinned tracker. + bookmarksDrawerPinned = !bookmarksDrawerPinned; + + // Update the bookmarks drawer pinned image view. + updateBookmarksDrawerPinnedImageView(); + } + + private void updateBookmarksDrawerPinnedImageView() { + // Set the current icon. + if (bookmarksDrawerPinned) + bookmarksDrawerPinnedImageView.setImageResource(R.drawable.pin_selected); + else + bookmarksDrawerPinnedImageView.setImageResource(R.drawable.pin); + } + private void setCurrentWebView(int pageNumber) { // Stop the swipe to refresh indicator if it is running swipeRefreshLayout.setRefreshing(false); diff --git a/app/src/main/res/drawable/move_to_folder.xml b/app/src/main/res/drawable/move_to_folder.xml index b9568180..0914f14f 100644 --- a/app/src/main/res/drawable/move_to_folder.xml +++ b/app/src/main/res/drawable/move_to_folder.xml @@ -1,5 +1,5 @@ + + + + + diff --git a/app/src/main/res/drawable/pin_selected.xml b/app/src/main/res/drawable/pin_selected.xml new file mode 100644 index 00000000..f7a1d9b0 --- /dev/null +++ b/app/src/main/res/drawable/pin_selected.xml @@ -0,0 +1,35 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/sort.xml b/app/src/main/res/drawable/sort.xml index 1552f811..6892e4de 100644 --- a/app/src/main/res/drawable/sort.xml +++ b/app/src/main/res/drawable/sort.xml @@ -11,4 +11,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/drawable/sort_selected.xml b/app/src/main/res/drawable/sort_selected.xml index adc89251..a911b995 100644 --- a/app/src/main/res/drawable/sort_selected.xml +++ b/app/src/main/res/drawable/sort_selected.xml @@ -1,5 +1,5 @@ + + + + @@ -77,7 +90,7 @@ android:layout_width="wrap_content" android:layout_gravity="bottom|end" android:layout_marginEnd="16dp" - android:layout_marginBottom="155dp" + android:layout_marginBottom="200dp" android:src="@drawable/bookmarks" android:tint="?attr/fabIconTintColor" android:contentDescription="@string/bookmarks" /> @@ -88,7 +101,7 @@ android:layout_width="wrap_content" android:layout_gravity="bottom|end" android:layout_marginEnd="16dp" - android:layout_marginBottom="85dp" + android:layout_marginBottom="130dp" android:src="@drawable/create_folder" android:tint="?attr/fabIconTintColor" android:contentDescription="@string/create_folder" /> @@ -98,8 +111,9 @@ android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="bottom|end" - android:layout_margin="16dp" + android:layout_marginEnd="16dp" + android:layout_marginBottom="60dp" android:src="@drawable/create_bookmark" android:tint="?attr/fabIconTintColor" android:contentDescription="@string/create_bookmark" /> - \ No newline at end of file + diff --git a/app/src/main/res/layout-w900dp/bookmarks_drawer_top_appbar.xml b/app/src/main/res/layout-w900dp/bookmarks_drawer_top_appbar.xml index 911f0a6d..cda02c0a 100644 --- a/app/src/main/res/layout-w900dp/bookmarks_drawer_top_appbar.xml +++ b/app/src/main/res/layout-w900dp/bookmarks_drawer_top_appbar.xml @@ -1,7 +1,7 @@ + + + + - \ No newline at end of file + diff --git a/app/src/main/res/layout/bookmarks_drawer_bottom_appbar.xml b/app/src/main/res/layout/bookmarks_drawer_bottom_appbar.xml index 7ba10280..3ec8e144 100644 --- a/app/src/main/res/layout/bookmarks_drawer_bottom_appbar.xml +++ b/app/src/main/res/layout/bookmarks_drawer_bottom_appbar.xml @@ -1,7 +1,7 @@ + + + + @@ -102,4 +115,4 @@ android:src="@drawable/create_bookmark" android:tint="?attr/fabIconTintColor" android:contentDescription="@string/create_bookmark" /> - \ No newline at end of file + diff --git a/app/src/main/res/layout/bookmarks_drawer_top_appbar.xml b/app/src/main/res/layout/bookmarks_drawer_top_appbar.xml index f4e37b27..bea5b9d2 100644 --- a/app/src/main/res/layout/bookmarks_drawer_top_appbar.xml +++ b/app/src/main/res/layout/bookmarks_drawer_top_appbar.xml @@ -1,7 +1,7 @@ + + + + - \ No newline at end of file + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 428e613a..b9421a14 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -46,11 +46,12 @@ Cookies deleted DOM Storage deleted Form Data deleted - Open Navigation Drawer - Close Navigation Drawer + Open navigation drawer + Close navigation drawer + Pin drawer Unrecognized URL: Add tab - Close Tab + Close tab New tab Loading… Error: -- 2.43.0