<PersistentState>
<option name="values">
<map>
- <entry key="url" value="jar:file:/home/soren/Android/android-studio/plugins/android/lib/android.jar!/images/material_design_icons/communication/ic_import_export_black_24dp.xml" />
+ <entry key="url" value="jar:file:/home/soren/Android/android-studio/plugins/android/lib/android.jar!/images/material_design_icons/content/ic_sort_black_24dp.xml" />
</map>
</option>
</PersistentState>
</option>
<option name="values">
<map>
+ <entry key="assetSourceType" value="FILE" />
<entry key="autoMirrored" value="true" />
- <entry key="outputName" value="import_export" />
- <entry key="sourceFile" value="$USER_HOME$/ownCloud/Android/Privacy Browser/Icons/Icons/bookmarks_light.svg" />
+ <entry key="outputName" value="sort_selected_light" />
+ <entry key="sourceFile" value="$USER_HOME$/ownCloud/Android/Privacy Browser/Icons/Icons/sort_selected_light.svg" />
</map>
</option>
</PersistentState>
<!--
- Copyright © 2016-2018 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
Translation 2016 Aaron Gerlach <aaron@gerlach.com>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
<body>
<h3>Copyright</h3>
- <p>Privacy Browser ist copyright © 2015-2018 von <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+ <p>Privacy Browser ist copyright © 2015-2019 von <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
<h3>Lizenz</h3>
<p>Privacy Browser ist veröffentlicht unter der <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ Lizenz</a>. The full text of the license is below.
<p><img class="left" src="../shared_images/night_mode_dark.png"> is derived from <code>compare</code>, which is part of the <a href="https://material.io/icons/">Android Material icon set</a>
and is released under the <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>. Modifications copyright © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
The resulting image is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.</p>
+ <p><img class="left" src="../shared_images/sort_selected_light.png"> is derived from <code>sort</code>, which is part of the <a href="https://material.io/icons/">Android Material icon set</a>
+ and is released under the <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>. Modifications copyright © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
+ The resulting image is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.</p>
<p><img class="left" src="../shared_images/orbot_dark.png"> orbot is a modified version of
<a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">the status icon from the Orbot project</a>,
which is copyright 2009-2010 Nathan Freitas, The Guardian Project. It is released under the <a href="https://gitweb.torproject.org/orbot.git/tree/LICENSE">3-clause BSD license</a>.
<p><img class="icon" src="../shared_images/select_all_dark.png"> select_all.</p>
<p><img class="icon" src="../shared_images/settings_dark.png"> settings.</p>
<p><img class="icon" src="../shared_images/smartphone_dark.png"> smartphone.</p>
+ <p><img class="icon" src="../shared_images/sort_dark.png"> sort.</p>
<p><img class="icon" src="../shared_images/style_dark.png"> style.</p>
<p><img class="icon" src="../shared_images/subtitles_dark.png"> subtitles.</p>
<p><img class="icon" src="../shared_images/text_fields_dark.png"> text_fields.</p>
<!--
- Copyright © 2016-2018 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
Translation 2016 Aaron Gerlach <aaron@gerlach.com>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
<body>
<h3>Copyright</h3>
- <p>Privacy Browser ist copyright © 2015-2018 von <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+ <p>Privacy Browser ist copyright © 2015-2019 von <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
<h3>Lizenz</h3>
<p>Privacy Browser ist veröffentlicht unter der <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ Lizenz</a>. The full text of the license is below.
<p><img class="left" src="../shared_images/night_mode_light.png"> is derived from <code>compare</code>, which is part of the <a href="https://material.io/icons/">Android Material icon set</a>
and is released under the <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>. Modifications copyright © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
The resulting image is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.</p>
+ <p><img class="left" src="../shared_images/sort_selected_light.png"> is derived from <code>sort</code>, which is part of the <a href="https://material.io/icons/">Android Material icon set</a>
+ and is released under the <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>. Modifications copyright © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
+ The resulting image is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.</p>
<p><img class="left" src="../shared_images/orbot_light.png"> orbot is a modified version of
<a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">the status icon from the Orbot project</a>,
which is copyright 2009-2010 Nathan Freitas, The Guardian Project. It is released under the <a href="https://gitweb.torproject.org/orbot.git/tree/LICENSE">3-clause BSD license</a>.
<p><img class="icon" src="../shared_images/select_all_light.png"> select_all.</p>
<p><img class="icon" src="../shared_images/settings_light.png"> settings.</p>
<p><img class="icon" src="../shared_images/smartphone_light.png"> smartphone.</p>
+ <p><img class="icon" src="../shared_images/sort_light.png"> sort.</p>
<p><img class="icon" src="../shared_images/style_light.png"> style.</p>
<p><img class="icon" src="../shared_images/subtitles_light.png"> subtitles.</p>
<p><img class="icon" src="../shared_images/text_fields_light.png"> text_fields.</p>
<!--
- Copyright © 2016-2018 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
<body>
<h3>Copyright</h3>
- <p>Privacy Browser copyright © 2015-2018 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+ <p>Privacy Browser copyright © 2015-2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
<h3>License</h3>
<p>Privacy Browser is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>. The full text of the license is below.
<p><img class="left" src="../shared_images/night_mode_dark.png"> is derived from <code>compare</code>, which is part of the <a href="https://material.io/icons/">Android Material icon set</a>
and is released under the <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>. Modifications copyright © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
The resulting image is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.</p>
+ <p><img class="left" src="../shared_images/sort_selected_dark.png"> is derived from <code>sort</code>, which is part of the <a href="https://material.io/icons/">Android Material icon set</a>
+ and is released under the <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>. Modifications copyright © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
+ The resulting image is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.</p>
<p><img class="left" src="../shared_images/orbot_dark.png"> orbot is a modified version of
<a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">the status icon from the Orbot project</a>,
which is copyright 2009-2010 Nathan Freitas, The Guardian Project. It is released under the <a href="https://gitweb.torproject.org/orbot.git/tree/LICENSE">3-clause BSD license</a>.
<p><img class="icon" src="../shared_images/select_all_dark.png"> select_all.</p>
<p><img class="icon" src="../shared_images/settings_dark.png"> settings.</p>
<p><img class="icon" src="../shared_images/smartphone_dark.png"> smartphone.</p>
+ <p><img class="icon" src="../shared_images/sort_dark.png"> sort.</p>
<p><img class="icon" src="../shared_images/style_dark.png"> style.</p>
<p><img class="icon" src="../shared_images/subtitles_dark.png"> subtitles.</p>
<p><img class="icon" src="../shared_images/text_fields_dark.png"> text_fields.</p>
<!--
- Copyright © 2016-2018 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
<body>
<h3>Copyright</h3>
- <p>Privacy Browser copyright © 2015-2018 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+ <p>Privacy Browser copyright © 2015-2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
<h3>License</h3>
<p>Privacy Browser is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>. The full text of the license is below.
<p><img class="left" src="../shared_images/night_mode_light.png"> is derived from <code>compare</code>, which is part of the <a href="https://material.io/icons/">Android Material icon set</a>
and is released under the <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>. Modifications copyright © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
The resulting image is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.</p>
+ <p><img class="left" src="../shared_images/sort_selected_light.png"> is derived from <code>sort</code>, which is part of the <a href="https://material.io/icons/">Android Material icon set</a>
+ and is released under the <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>. Modifications copyright © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
+ The resulting image is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.</p>
<p><img class="left" src="../shared_images/orbot_light.png"> orbot is a modified version of
<a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">the status icon from the Orbot project</a>,
which is copyright 2009-2010 Nathan Freitas, The Guardian Project. It is released under the <a href="https://gitweb.torproject.org/orbot.git/tree/LICENSE">3-clause BSD license</a>.
<p><img class="icon" src="../shared_images/select_all_light.png"> select_all.</p>
<p><img class="icon" src="../shared_images/settings_light.png"> settings.</p>
<p><img class="icon" src="../shared_images/smartphone_light.png"> smartphone.</p>
+ <p><img class="icon" src="../shared_images/sort_light.png"> sort.</p>
<p><img class="icon" src="../shared_images/style_light.png"> style.</p>
<p><img class="icon" src="../shared_images/subtitles_light.png"> subtitles.</p>
<p><img class="icon" src="../shared_images/text_fields_light.png"> text_fields.</p>
<!--
- Copyright © 2016-2018 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
Translation 2017-2018 Jose A. León. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
<body>
<h3>Derechos de autor</h3>
- <p>Navegador Privado tiene derechos de autor © 2015-2018 por <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+ <p>Navegador Privado tiene derechos de autor © 2015-2019 por <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
<h3>Licencia</h3>
<p>Navegador Privado está liberado bajo la licencia <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+</a>.
<p><img class="left" src="../shared_images/night_mode_dark.png"> deriva de <code>compare</code>, que es parte del <a href="https://material.io/icons/">conjunto de iconos Android Material</a>
y es liberado bajo la <a href ="https://www.apache.org/licenses/LICENSE-2.0">Licencia Apache 2.0</a>. Copyright de modificaciones © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
La imagen resultante se libera bajo la <a href="https://www.gnu.org/licenses/gpl-3.0.html">licencia GPLv3+</a>.</p>
+ <p><img class="left" src="../shared_images/sort_selected_dark.png"> deriva de <code>sort</code>, que es parte del <a href="https://material.io/icons/">conjunto de iconos Android Material</a>
+ y es liberado bajo la <a href ="https://www.apache.org/licenses/LICENSE-2.0">Licencia Apache 2.0</a>. Copyright de modificaciones © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
+ La imagen resultante se libera bajo la <a href="https://www.gnu.org/licenses/gpl-3.0.html">licencia GPLv3+</a>.</p>
<p><img class="left" src="../shared_images/orbot_dark.png"> orbot es una versión modificada del
<a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">icono de estado del proyecto Orbot</a>,
que tiene copyright 2009-2010 por Nathan Freitas, The Guardian Project.
<p><img class="icon" src="../shared_images/select_all_dark.png"> select_all.</p>
<p><img class="icon" src="../shared_images/settings_dark.png"> settings.</p>
<p><img class="icon" src="../shared_images/smartphone_dark.png"> smartphone.</p>
+ <p><img class="icon" src="../shared_images/sort_dark.png"> sort.</p>
<p><img class="icon" src="../shared_images/style_dark.png"> style.</p>
<p><img class="icon" src="../shared_images/subtitles_dark.png"> subtitles.</p>
<p><img class="icon" src="../shared_images/text_fields_dark.png"> text_fields.</p>
<!--
- Copyright © 2016-2018 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
Translation 2017-2018 Jose A. León. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
<body>
<h3>Derechos de autor</h3>
- <p>Navegador Privado tiene derechos de autor © 2015-2018 por <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+ <p>Navegador Privado tiene derechos de autor © 2015-2019 por <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
<h3>Licencia</h3>
<p>Navegador Privado está liberado bajo la licencia <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+</a>.
<p><img class="left" src="../shared_images/night_mode_light.png"> deriva de <code>compare</code>, que es parte del <a href="https://material.io/icons/">conjunto de iconos Android Material</a>
y es liberado bajo la <a href ="https://www.apache.org/licenses/LICENSE-2.0">Licencia Apache 2.0</a>. Copyright de modificaciones © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
La imagen resultante se libera bajo la <a href="https://www.gnu.org/licenses/gpl-3.0.html">licencia GPLv3+</a>.</p>
+ <p><img class="left" src="../shared_images/sort_selected_light.png"> deriva de <code>sort</code>, que es parte del <a href="https://material.io/icons/">conjunto de iconos Android Material</a>
+ y es liberado bajo la <a href ="https://www.apache.org/licenses/LICENSE-2.0">Licencia Apache 2.0</a>. Copyright de modificaciones © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
+ La imagen resultante se libera bajo la <a href="https://www.gnu.org/licenses/gpl-3.0.html">licencia GPLv3+</a>.</p>
<p><img class="left" src="../shared_images/orbot_light.png"> orbot es una versión modificada del
<a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">icono de estado del proyecto Orbot</a>,
que tiene copyright 2009-2010 por Nathan Freitas, The Guardian Project.
<p><img class="icon" src="../shared_images/select_all_light.png"> select_all.</p>
<p><img class="icon" src="../shared_images/settings_light.png"> settings.</p>
<p><img class="icon" src="../shared_images/smartphone_light.png"> smartphone.</p>
+ <p><img class="icon" src="../shared_images/sort_light.png"> sort.</p>
<p><img class="icon" src="../shared_images/style_light.png"> style.</p>
<p><img class="icon" src="../shared_images/subtitles_light.png"> subtitles.</p>
<p><img class="icon" src="../shared_images/text_fields_light.png"> text_fields.</p>
<!--
- Copyright © 2017-2018 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2017-2019 Soren Stoutner <soren@stoutner.com>.
Translation 2017-2018 Francesco Buratti. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
<body>
<h3>Copyright</h3>
- <p>Privacy Browser copyright © 2015-2018: <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+ <p>Privacy Browser copyright © 2015-2019: <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
<h3>Licenza</h3>
<p>Privacy Browser è rilasciato con <a href="https://www.gnu.org/licenses/gpl-3.0.html">Licenza GPLv3+ </a>.
<p><img class="left" src="../shared_images/night_mode_dark.png"> è stata derivata da <code>compare</code>,
che fa parte dell'<a href="https://material.io/icons/">Android Material icon set</a> ed è stata rilasciata sotto <a href="https://www.apache.org/licenses/LICENSE-2.0">Licenza Apache 2.0</a>.
Copyright delle modifiche © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
+ <p><img class="left" src="../shared_images/sort_selected_dark.png"> è stata derivata da <code>sort</code>,
+ che fa parte dell'<a href="https://material.io/icons/">Android Material icon set</a> ed è stata rilasciata sotto <a href="https://www.apache.org/licenses/LICENSE-2.0">Licenza Apache 2.0</a>.
+ Copyright delle modifiche © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
L'immagine risultante è rilasciata sotto <a href="https://www.gnu.org/licenses/gpl-3.0.html">Licenza GPLv3+</a>.</p>
<p><img class="left" src="../shared_images/orbot_dark.png"> orbot è una versione modificata della
<a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">icona di stato del progetto Orbot</a>,
<p><img class="icon" src="../shared_images/select_all_dark.png"> select_all.</p>
<p><img class="icon" src="../shared_images/settings_dark.png"> settings.</p>
<p><img class="icon" src="../shared_images/smartphone_dark.png"> smartphone.</p>
+ <p><img class="icon" src="../shared_images/sort_dark.png"> sort.</p>
<p><img class="icon" src="../shared_images/style_dark.png"> style.</p>
<p><img class="icon" src="../shared_images/subtitles_dark.png"> subtitles.</p>
<p><img class="icon" src="../shared_images/text_fields_dark.png"> text_fields.</p>
<!--
- Copyright © 2017-2018 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2017-2019 Soren Stoutner <soren@stoutner.com>.
Translation 2017-2018 Francesco Buratti. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
<body>
<h3>Copyright</h3>
- <p>Privacy Browser copyright © 2015-2018: <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+ <p>Privacy Browser copyright © 2015-2019: <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
<h3>Licenza</h3>
<p>Privacy Browser è rilasciato con <a href="https://www.gnu.org/licenses/gpl-3.0.html">Licenza GPLv3+ </a>.
che fa parte dell'<a href="https://material.io/icons/">Android Material icon set</a> ed è stata rilasciata sotto <a href="https://www.apache.org/licenses/LICENSE-2.0">Licenza Apache 2.0</a>.
Copyright delle modifiche © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
L'immagine risultante è rilasciata sotto <a href="https://www.gnu.org/licenses/gpl-3.0.html">Licenza GPLv3+</a>.</p>
+ <p><img class="left" src="../shared_images/sort_selected_light.png"> è stata derivata da <code>sort</code>,
+ che fa parte dell'<a href="https://material.io/icons/">Android Material icon set</a> ed è stata rilasciata sotto <a href="https://www.apache.org/licenses/LICENSE-2.0">Licenza Apache 2.0</a>.
+ Copyright delle modifiche © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
+ L'immagine risultante è rilasciata sotto <a href="https://www.gnu.org/licenses/gpl-3.0.html">Licenza GPLv3+</a>.</p>
<p><img class="left" src="../shared_images/orbot_light.png"> orbot è una versione modificata della
<a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">icona di stato del progetto Orbot</a>,
il cui copyright è 2009-2010 Nathan Freitas, The Guardian Project.
<p><img class="icon" src="../shared_images/select_all_light.png"> select_all.</p>
<p><img class="icon" src="../shared_images/settings_light.png"> settings.</p>
<p><img class="icon" src="../shared_images/smartphone_light.png"> smartphone.</p>
+ <p><img class="icon" src="../shared_images/sort_light.png"> sort.</p>
<p><img class="icon" src="../shared_images/style_light.png"> style.</p>
<p><img class="icon" src="../shared_images/subtitles_light.png"> subtitles.</p>
<p><img class="icon" src="../shared_images/text_fields_light.png"> text_fields.</p>
<!--
- Copyright © 2016-2018 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
<body>
<h3>Авторские права</h3>
- <p>Авторские права Privacy Browser © 2015-2018 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+ <p>Авторские права Privacy Browser © 2015-2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
<h3>Лицензия</h3>
<p>Privacy Browser выпущен под <a href="https://www.gnu.org/licenses/gpl-3.0.html">лицензией GPLv3+</a>. Полный текст лицензии приведен ниже.
и выпущены под <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>.
Модификации авторских прав © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
Полученные изображения выпущены под <a href="https://www.gnu.org/licenses/gpl-3.0.html">лицензией GPLv3+</a>.</p>
+ <p><img class="left" src="../shared_images/sort_selected_dark.png"> являются производными от <code>sort</code>,
+ которые являются частью <a href="https://material.io/icons/">Android Material icon set</a> и выпущены под <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>.
+ Модификации авторских прав © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
+ Полученные изображения выпущены под <a href="https://www.gnu.org/licenses/gpl-3.0.html">лицензией GPLv3+</a>.</p>
<p><img class="left" src="../shared_images/orbot_dark.png"> orbot - это модифицированная версия
<a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">значок статуса из проекта Orbot</a>,
который защищен авторским правом 2009-2010 Nathan Freitas, The Guardian Project.
<p><img class="icon" src="../shared_images/select_all_dark.png"> select_all.</p>
<p><img class="icon" src="../shared_images/settings_dark.png"> settings.</p>
<p><img class="icon" src="../shared_images/smartphone_dark.png"> smartphone.</p>
+ <p><img class="icon" src="../shared_images/sort_dark.png"> sort.</p>
<p><img class="icon" src="../shared_images/style_dark.png"> style.</p>
<p><img class="icon" src="../shared_images/subtitles_dark.png"> subtitles.</p>
<p><img class="icon" src="../shared_images/text_fields_dark.png"> text_fields.</p>
<!--
- Copyright © 2016-2018 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
<body>
<h3>Авторские права</h3>
- <p>Авторские права Privacy Browser © 2015-2018 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+ <p>Авторские права Privacy Browser © 2015-2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
<h3>Лицензия</h3>
<p>Privacy Browser выпущен под <a href="https://www.gnu.org/licenses/gpl-3.0.html">лицензией GPLv3+</a>. Полный текст лицензии приведен ниже.
которые являются частью <a href="https://material.io/icons/">Android Material icon set</a> и выпущены под <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>.
Модификации авторских прав © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
Полученные изображения выпущены под <a href="https://www.gnu.org/licenses/gpl-3.0.html">лицензией GPLv3+</a>.</p>
+ <p><img class="left" src="../shared_images/sort_selected_light.png"> являются производными от <code>sort</code>,
+ которые являются частью <a href="https://material.io/icons/">Android Material icon set</a> и выпущены под <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>.
+ Модификации авторских прав © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
+ Полученные изображения выпущены под <a href="https://www.gnu.org/licenses/gpl-3.0.html">лицензией GPLv3+</a>.</p>
<p><img class="left" src="../shared_images/orbot_light.png"> orbot - это модифицированная версия
<a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">значок статуса из проекта Orbot</a>,
который защищен авторским правом 2009-2010 Nathan Freitas, The Guardian Project.
<p><img class="icon" src="../shared_images/select_all_light.png"> select_all.</p>
<p><img class="icon" src="../shared_images/settings_light.png"> settings.</p>
<p><img class="icon" src="../shared_images/smartphone_light.png"> smartphone.</p>
+ <p><img class="icon" src="../shared_images/sort_light.png"> sort.</p>
<p><img class="icon" src="../shared_images/style_light.png"> style.</p>
<p><img class="icon" src="../shared_images/subtitles_light.png"> subtitles.</p>
<p><img class="icon" src="../shared_images/text_fields_light.png"> text_fields.</p>
<!--
- Copyright © 2016-2018 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
<body>
<h3>Copyright</h3>
- <p>Privacy Browser copyright © 2015-2018 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+ <p>Privacy Browser copyright © 2015-2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
<h3>License</h3>
<p>Privacy Browser is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>. The full text of the license is below.
<p><img class="left" src="../shared_images/night_mode_dark.png"> is derived from <code>compare</code>, which is part of the <a href="https://material.io/icons/">Android Material icon set</a>
and is released under the <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>. Modifications copyright © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
The resulting image is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.</p>
+ <p><img class="left" src="../shared_images/sort_selected_dark.png"> is derived from <code>sort</code>, which is part of the <a href="https://material.io/icons/">Android Material icon set</a>
+ and is released under the <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>. Modifications copyright © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
+ The resulting image is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.</p>
<p><img class="left" src="../shared_images/orbot_dark.png"> orbot is a modified version of
<a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">the status icon from the Orbot project</a>,
which is copyright 2009-2010 Nathan Freitas, The Guardian Project. It is released under the <a href="https://gitweb.torproject.org/orbot.git/tree/LICENSE">3-clause BSD license</a>.
<p><img class="icon" src="../shared_images/select_all_dark.png"> select_all.</p>
<p><img class="icon" src="../shared_images/settings_dark.png"> settings.</p>
<p><img class="icon" src="../shared_images/smartphone_dark.png"> smartphone.</p>
+ <p><img class="icon" src="../shared_images/sort_dark.png"> sort.</p>
<p><img class="icon" src="../shared_images/style_dark.png"> style.</p>
<p><img class="icon" src="../shared_images/subtitles_dark.png"> subtitles.</p>
<p><img class="icon" src="../shared_images/text_fields_dark.png"> text_fields.</p>
<!--
- Copyright © 2016-2018 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
<body>
<h3>Copyright</h3>
- <p>Privacy Browser copyright © 2015-2018 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+ <p>Privacy Browser copyright © 2015-2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
<h3>License</h3>
<p>Privacy Browser is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>. The full text of the license is below.
<p><img class="left" src="../shared_images/night_mode_light.png"> is derived from <code>compare</code>, which is part of the <a href="https://material.io/icons/">Android Material icon set</a>
and is released under the <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>. Modifications copyright © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
The resulting image is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.</p>
+ <p><img class="left" src="../shared_images/sort_selected_light.png"> is derived from <code>sort</code>, which is part of the <a href="https://material.io/icons/">Android Material icon set</a>
+ and is released under the <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>. Modifications copyright © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
+ The resulting image is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.</p>
<p><img class="left" src="../shared_images/orbot_light.png"> orbot is a modified version of
<a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">the status icon from the Orbot project</a>,
which is copyright 2009-2010 Nathan Freitas, The Guardian Project. It is released under the <a href="https://gitweb.torproject.org/orbot.git/tree/LICENSE">3-clause BSD license</a>.
<p><img class="icon" src="../shared_images/select_all_light.png"> select_all.</p>
<p><img class="icon" src="../shared_images/settings_light.png"> settings.</p>
<p><img class="icon" src="../shared_images/smartphone_light.png"> smartphone.</p>
+ <p><img class="icon" src="../shared_images/sort_light.png"> sort.</p>
<p><img class="icon" src="../shared_images/style_light.png"> style.</p>
<p><img class="icon" src="../shared_images/subtitles_light.png"> subtitles.</p>
<p><img class="icon" src="../shared_images/text_fields_light.png"> text_fields.</p>
/*
- * Copyright © 2016-2018 Soren Stoutner <soren@stoutner.com>.
+ * Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
*
* This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
*
@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
- // Get the ID of the `MenuItem` that was selected.
+ // Get the ID of the menu item that was selected.
int menuItemId = menuItem.getItemId();
switch (menuItemId) {
/*
- * Copyright © 2016-2018 Soren Stoutner <soren@stoutner.com>.
+ * Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
*
* This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
*
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
+import android.support.design.widget.Snackbar;
+import android.support.v4.app.NavUtils;
import android.support.v4.content.ContextCompat;
import android.support.v4.widget.CursorAdapter;
import android.support.v4.widget.ResourceCursorAdapter;
// `AppCompatDialogFragment` is required instead of `DialogFragment` or an error is produced on API <=22.
import android.support.v7.app.AppCompatDialogFragment;
import android.support.v7.widget.Toolbar;
+import android.view.Menu;
+import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
// `bookmarksCursor` is used in `onCreate()`, `updateBookmarksListView()`, `onSaveBookmark()`, `onSaveBookmarkFolder()`, and `onDestroy()`.
private Cursor bookmarksCursor;
- // `bookmarksCursorAdapter` is used in `onCreate()`, `onSaveBookmark()`, `onSaveBookmarkFolder()`.
+ // `bookmarksCursorAdapter` is used in `onCreate()` and `updateBookmarksListView()`.
private CursorAdapter bookmarksCursorAdapter;
// `oldFolderNameString` is used in `onCreate()` and `onSaveBookmarkFolder()`.
private String oldFolderNameString;
- // `currentFolderDatabaseId` is used in `onCreate()`, `onSaveBookmark()`, and `onSaveBookmarkFolder()`.
+ // `currentFolderDatabaseId` is used in `onCreate()`, `updateBookmarksListView()`, `onSaveBookmark()`, and `onSaveBookmarkFolder()`.
private int currentFolderDatabaseId;
// `currentFolder` is used in `onCreate()`, `onSaveBookmark()`, and `onSaveBookmarkFolder()`.
private String currentFolderName;
+ // `sortByDisplayOrder` is used in `onCreate()`, `onOptionsItemSelected()`, and `updateBookmarksListView()`.
+ private boolean sortByDisplayOrder;
+
@Override
public void onCreate(Bundle savedInstanceState) {
// Disable screenshots if not allowed.
setContentView(R.layout.bookmarks_databaseview_coordinatorlayout);
// The `SupportActionBar` from `android.support.v7.app.ActionBar` must be used until the minimum API is >= 21.
- final Toolbar bookmarksDatabaseViewAppBar = findViewById(R.id.bookmarks_databaseview_toolbar);
+ Toolbar bookmarksDatabaseViewAppBar = findViewById(R.id.bookmarks_databaseview_toolbar);
setSupportActionBar(bookmarksDatabaseViewAppBar);
// Get a handle for the `AppBar`.
- final ActionBar appBar = getSupportActionBar();
+ ActionBar appBar = getSupportActionBar();
// Remove the incorrect warning in Android Studio that `appBar` might be null.
assert appBar != null;
folderSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
- // Convert the database ID to an `int`.
- int databaseId = (int) id;
-
// Store the current folder database ID.
- currentFolderDatabaseId = databaseId;
-
- // Populate the bookmarks list view based on the spinner selection.
- switch (databaseId) {
- // Get a cursor with all the folders.
- case ALL_FOLDERS_DATABASE_ID:
- bookmarksCursor = bookmarksDatabaseHelper.getAllBookmarksCursor();
- break;
-
- // Get a cursor for the home folder.
- case HOME_FOLDER_DATABASE_ID:
- bookmarksCursor = bookmarksDatabaseHelper.getAllBookmarksCursor("");
- break;
-
- // Display the selected folder.
- default:
- // Get a handle for the selected view.
- TextView selectedFolderTextView = view.findViewById(R.id.spinner_item_textview);
+ currentFolderDatabaseId = (int) id;
- // Extract the name of the selected folder.
- String folderName = selectedFolderTextView.getText().toString();
+ // Get a handle for the selected view.
+ TextView selectedFolderTextView = findViewById(R.id.spinner_item_textview);
- // Get a cursor for the selected folder.
- bookmarksCursor = bookmarksDatabaseHelper.getAllBookmarksCursor(folderName);
-
- // Store the current folder name.
- currentFolderName = folderName;
- }
+ // Store the current folder name.
+ currentFolderName = selectedFolderTextView.getText().toString();
// Update the list view.
- bookmarksCursorAdapter.changeCursor(bookmarksCursor);
+ updateBookmarksListView();
}
@Override
});
}
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu.
+ getMenuInflater().inflate(R.menu.bookmarks_databaseview_options_menu, menu);
+
+ // Success.
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem menuItem) {
+ // Get the ID of the menu item that was selected.
+ int menuItemId = menuItem.getItemId();
+
+ switch (menuItemId) {
+ case android.R.id.home: // The home arrow is identified as `android.R.id.home`, not just `R.id.home`.
+ // Return to `MainWebViewActivity`.
+ NavUtils.navigateUpFromSameTask(this);
+ break;
+
+ case R.id.options_menu_sort:
+ // Update the sort by display order tracker.
+ sortByDisplayOrder = !sortByDisplayOrder;
+
+ // Get a handle for the bookmarks `ListView`.
+ ListView bookmarksListView = findViewById(R.id.bookmarks_databaseview_listview);
+
+ // Update the icon and display a snackbar.
+ if (sortByDisplayOrder) { // Sort by display order.
+ // Update the icon according to the theme.
+ if (MainWebViewActivity.darkTheme) {
+ menuItem.setIcon(R.drawable.sort_selected_dark);
+ } else {
+ menuItem.setIcon(R.drawable.sort_selected_light);
+ }
+
+ // Display a Snackbar indicating the current sort type.
+ Snackbar.make(bookmarksListView, R.string.sorted_by_display_order, Snackbar.LENGTH_SHORT).show();
+ } else { // Sort by database id.
+ // Update the icon according to the theme.
+ if (MainWebViewActivity.darkTheme) {
+ menuItem.setIcon(R.drawable.sort_dark);
+ } else {
+ menuItem.setIcon(R.drawable.sort_light);
+ }
+
+ // Display a Snackbar indicating the current sort type.
+ Snackbar.make(bookmarksListView, R.string.sorted_by_database_id, Snackbar.LENGTH_SHORT).show();
+ }
+
+ // Update the list view.
+ updateBookmarksListView();
+ break;
+ }
+ return true;
+ }
+
+ private void updateBookmarksListView() {
+ // Populate the bookmarks list view based on the spinner selection.
+ switch (currentFolderDatabaseId) {
+ // Get a cursor with all the folders.
+ case ALL_FOLDERS_DATABASE_ID:
+ if (sortByDisplayOrder) {
+ bookmarksCursor = bookmarksDatabaseHelper.getAllBookmarksCursorByDisplayOrder();
+ } else {
+ bookmarksCursor = bookmarksDatabaseHelper.getAllBookmarksCursor();
+ }
+ break;
+
+ // Get a cursor for the home folder.
+ case HOME_FOLDER_DATABASE_ID:
+ if (sortByDisplayOrder) {
+ bookmarksCursor = bookmarksDatabaseHelper.getAllBookmarksCursorByDisplayOrder("");
+ } else {
+ bookmarksCursor = bookmarksDatabaseHelper.getAllBookmarksCursor("");
+ }
+ break;
+
+ // Display the selected folder.
+ default:
+ // Get a cursor for the selected folder.
+ if (sortByDisplayOrder) {
+ bookmarksCursor = bookmarksDatabaseHelper.getAllBookmarksCursorByDisplayOrder(currentFolderName);
+ } else {
+ bookmarksCursor = bookmarksDatabaseHelper.getAllBookmarksCursor(currentFolderName);
+ }
+ }
+
+ // Update the list view.
+ bookmarksCursorAdapter.changeCursor(bookmarksCursor);
+ }
+
@Override
public void onSaveBookmark(AppCompatDialogFragment dialogFragment, int selectedBookmarkDatabaseId) {
// Get handles for the views from dialog fragment.
bookmarksDatabaseHelper.updateBookmark(selectedBookmarkDatabaseId, bookmarkNameString, bookmarkUrlString, parentFolderNameString, displayOrderInt, newFavoriteIconByteArray);
}
- // Update `bookmarksCursor` with the contents of the current folder.
- switch (currentFolderDatabaseId) {
- case ALL_FOLDERS_DATABASE_ID:
- // Get a cursor with all the bookmarks.
- bookmarksCursor = bookmarksDatabaseHelper.getAllBookmarksCursor();
- break;
-
- case HOME_FOLDER_DATABASE_ID:
- // Get a cursor with all the bookmarks in the home folder.
- bookmarksCursor = bookmarksDatabaseHelper.getAllBookmarksCursor("");
- break;
-
- default:
- // Get a cursor with all the bookmarks in the current folder.
- bookmarksCursor = bookmarksDatabaseHelper.getAllBookmarksCursor(currentFolderName);
- }
-
- // Update the `ListView`.
- bookmarksCursorAdapter.changeCursor(bookmarksCursor);
+ // Update the list view.
+ updateBookmarksListView();
}
@Override
bookmarksDatabaseHelper.updateFolder(selectedBookmarkDatabaseId, oldFolderNameString, newFolderNameString, parentFolderNameString, displayOrderInt, newFolderIconByteArray);
}
- // Update `bookmarksCursor` with the contents of the current folder.
- switch (currentFolderDatabaseId) {
- case ALL_FOLDERS_DATABASE_ID:
- // Get a cursor with all the bookmarks.
- bookmarksCursor = bookmarksDatabaseHelper.getAllBookmarksCursor();
- break;
-
- case HOME_FOLDER_DATABASE_ID:
- // Get a cursor with all the bookmarks in the home folder.
- bookmarksCursor = bookmarksDatabaseHelper.getAllBookmarksCursor("");
- break;
-
- default:
- // Get a cursor with all the bookmarks in the current folder.
- bookmarksCursor = bookmarksDatabaseHelper.getAllBookmarksCursor(currentFolderName);
- }
-
- // Update the `ListView`.
- bookmarksCursorAdapter.changeCursor(bookmarksCursor);
+ // Update the list view.
+ updateBookmarksListView();
}
@Override
/*
- * Copyright © 2015-2018 Soren Stoutner <soren@stoutner.com>.
+ * Copyright © 2015-2019 Soren Stoutner <soren@stoutner.com>.
*
* Download cookie code contributed 2017 Hendrik Knackstedt. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
*
/*
- * Copyright © 2016-2018 Soren Stoutner <soren@stoutner.com>.
+ * Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
*
* This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
*
folderName = DatabaseUtils.sqlEscapeString(folderName);
// Prepare the SQL statement to get the `Cursor` for the folder.
- final String GET_FOLDER = "SELECT * FROM " + BOOKMARKS_TABLE +
+ String GET_FOLDER = "SELECT * FROM " + BOOKMARKS_TABLE +
" WHERE " + BOOKMARK_NAME + " = " + folderName +
" AND " + IS_FOLDER + " = " + 1;
folderName = DatabaseUtils.sqlEscapeString(folderName);
// Prepare the SQL statement to get the `Cursor` for the folder.
- final String GET_FOLDER = "SELECT * FROM " + BOOKMARKS_TABLE +
+ String GET_FOLDER = "SELECT * FROM " + BOOKMARKS_TABLE +
" WHERE " + BOOKMARK_NAME + " = " + folderName +
" AND " + IS_FOLDER + " = " + 1;
SQLiteDatabase bookmarksDatabase = this.getReadableDatabase();
// Prepare the SQL statement to get the `Cursor` for the folders.
- final String GET_FOLDERS_EXCEPT = "SELECT * FROM " + BOOKMARKS_TABLE +
+ String GET_FOLDERS_EXCEPT = "SELECT * FROM " + BOOKMARKS_TABLE +
" WHERE " + IS_FOLDER + " = " + 1 +
" AND " + BOOKMARK_NAME + " NOT IN (" + exceptFolders +
") ORDER BY " + BOOKMARK_NAME + " ASC";
currentFolder = DatabaseUtils.sqlEscapeString(currentFolder);
// Prepare the SQL statement to get the `Cursor` for the subfolders.
- final String GET_SUBFOLDERS = "SELECT * FROM " + BOOKMARKS_TABLE +
+ String GET_SUBFOLDERS = "SELECT * FROM " + BOOKMARKS_TABLE +
" WHERE " + PARENT_FOLDER + " = " + currentFolder +
" AND " + IS_FOLDER + " = " + 1;
currentFolder = DatabaseUtils.sqlEscapeString(currentFolder);
// Prepare the SQL statement to get the parent folder.
- final String GET_PARENT_FOLDER = "SELECT * FROM " + BOOKMARKS_TABLE +
+ String GET_PARENT_FOLDER = "SELECT * FROM " + BOOKMARKS_TABLE +
" WHERE " + IS_FOLDER + " = " + 1 +
" AND " + BOOKMARK_NAME + " = " + currentFolder;
SQLiteDatabase bookmarksDatabase = this.getReadableDatabase();
// Prepare the SQL statement to get the `Cursor` for all the folders.
- final String GET_ALL_FOLDERS = "SELECT * FROM " + BOOKMARKS_TABLE +
+ String GET_ALL_FOLDERS = "SELECT * FROM " + BOOKMARKS_TABLE +
" WHERE " + IS_FOLDER + " = " + 1 +
" ORDER BY " + BOOKMARK_NAME + " ASC";
return bookmarksDatabase.rawQuery(GET_ALL_FOLDERS, null);
}
- // Get a `Cursor` for all bookmarks and folders.
+ // Get a cursor for all bookmarks and folders.
public Cursor getAllBookmarksCursor() {
// Get a readable database handle.
SQLiteDatabase bookmarksDatabase = this.getReadableDatabase();
- // Get everything in in the bookmarks table.
- final String GET_ALL_BOOKMARKS = "SELECT * FROM " + BOOKMARKS_TABLE;
+ // Get everything in the bookmarks table.
+ String GET_ALL_BOOKMARKS = "SELECT * FROM " + BOOKMARKS_TABLE;
- // Return the results as a Cursor. The second argument is `null` because there are no selectionArgs. The Cursor cannot be closed because it is used in the parent activity.
+ // Return the result as a Cursor. The Cursor cannot be closed because it is used in the parent activity.
return bookmarksDatabase.rawQuery(GET_ALL_BOOKMARKS, null);
}
// Get a readable database handle.
SQLiteDatabase bookmarksDatabase = this.getReadableDatabase();
- // SQL escape `folderName`.
+ // SQL escape the folder name.
folderName = DatabaseUtils.sqlEscapeString(folderName);
// Get everything in the bookmarks table with `folderName` as the `PARENT_FOLDER`.
- final String GET_ALL_BOOKMARKS = "SELECT * FROM " + BOOKMARKS_TABLE +
+ String GET_ALL_BOOKMARKS = "SELECT * FROM " + BOOKMARKS_TABLE +
" WHERE " + PARENT_FOLDER + " = " + folderName;
- // Return the results as a `Cursor`. The second argument is `null` because there are no `selectionArgs`. The Cursor cannot be closed because it is used in the parent activity.
+ // Return the result as a cursor. The cursor cannot be closed because it is used in the parent activity.
+ return bookmarksDatabase.rawQuery(GET_ALL_BOOKMARKS, null);
+ }
+
+ // Get a cursor for all bookmarks and folders ordered by display order.
+ public Cursor getAllBookmarksCursorByDisplayOrder() {
+ // Get a readable database handle.
+ SQLiteDatabase bookmarksDatabase = this.getReadableDatabase();
+
+ // Get everything in the bookmarks table ordered by display order.
+ String GET_ALL_BOOKMARKS = "SELECT * FROM " + BOOKMARKS_TABLE +
+ " ORDER BY " + DISPLAY_ORDER + " ASC";
+
+ // Return the result as a cursor. The cursor cannot be closed because it is used in the parent activity.
return bookmarksDatabase.rawQuery(GET_ALL_BOOKMARKS, null);
}
- // Get a `Cursor` for all bookmarks and folders in the specified folder ordered by display order.
+ // Get a cursor for all bookmarks and folders in the specified folder ordered by display order.
public Cursor getAllBookmarksCursorByDisplayOrder(String folderName) {
// Get a readable database handle.
SQLiteDatabase bookmarksDatabase = this.getReadableDatabase();
// SQL escape `folderName`.
folderName = DatabaseUtils.sqlEscapeString(folderName);
- // Get everything in the `BOOKMARKS_TABLE` with `folderName` as the `PARENT_FOLDER`.
- final String GET_ALL_BOOKMARKS = "SELECT * FROM " + BOOKMARKS_TABLE +
+ // Get everything in the bookmarks table with `folderName` as the `PARENT_FOLDER`.
+ String GET_ALL_BOOKMARKS = "SELECT * FROM " + BOOKMARKS_TABLE +
" WHERE " + PARENT_FOLDER + " = " + folderName +
" ORDER BY " + DISPLAY_ORDER + " ASC";
- // Return the results as a `Cursor`. The second argument is `null` because there are no `selectionArgs`. The Cursor cannot be closed because it is used in the parent activity.
+ // Return the result as a cursor. The cursor cannot be closed because it is used in the parent activity.
return bookmarksDatabase.rawQuery(GET_ALL_BOOKMARKS, null);
}
folderName = DatabaseUtils.sqlEscapeString(folderName);
// Prepare the SQL statement to select all items except those with the specified IDs.
- final String GET_All_BOOKMARKS_EXCEPT_SPECIFIED = "SELECT * FROM " + BOOKMARKS_TABLE +
+ String GET_All_BOOKMARKS_EXCEPT_SPECIFIED = "SELECT * FROM " + BOOKMARKS_TABLE +
" WHERE " + PARENT_FOLDER + " = " + folderName +
" AND " + _ID + " NOT IN (" + doNotGetIdsStringBuilder.toString() +
") ORDER BY " + DISPLAY_ORDER + " ASC";
SQLiteDatabase bookmarksDatabase = this.getReadableDatabase();
// Prepare the SQL statement to determine if `databaseId` is a folder.
- final String CHECK_IF_FOLDER = "SELECT * FROM " + BOOKMARKS_TABLE +
+ String CHECK_IF_FOLDER = "SELECT * FROM " + BOOKMARKS_TABLE +
" WHERE " + _ID + " = " + databaseId;
// Populate folderCursor. The second argument is `null` because there are no `selectionArgs`.
String newFolderSqlEscaped = DatabaseUtils.sqlEscapeString(newFolder);
// Prepare a SQL query to select all the bookmarks in the new folder.
- final String NEW_FOLDER = "SELECT * FROM " + BOOKMARKS_TABLE +
+ String NEW_FOLDER = "SELECT * FROM " + BOOKMARKS_TABLE +
" WHERE " + PARENT_FOLDER + " = " + newFolderSqlEscaped +
" ORDER BY " + DISPLAY_ORDER + " ASC";
--- /dev/null
+<!-- `sort_dark.xml` comes from the Android Material icon set, where it is called `sort`. It is released under the Apache License 2.0. -->
+
+<!-- `tools:ignore="VectorRaster"` removes the lint warning about `android:autoMirrored="true"` not applying to API < 21. -->
+<vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:autoMirrored="true"
+ android:height="24dp"
+ android:width="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0"
+ tools:ignore="VectorRaster" >
+
+ <!-- A hard coded color must be used until API >= 21. Then `@color` can be used. -->
+ <path
+ android:fillColor="#FFE0E0E0"
+ android:pathData="M3,18h6v-2L3,16v2zM3,6v2h18L21,6L3,6zM3,13h12v-2L3,11v2z" />
+</vector>
--- /dev/null
+<!-- `sort_light.xml` comes from the Android Material icon set, where it is called `sort`. It is released under the Apache License 2.0. -->
+
+<!-- `tools:ignore="VectorRaster"` removes the lint warning about `android:autoMirrored="true"` not applying to API < 21. -->
+<vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:autoMirrored="true"
+ android:height="24dp"
+ android:width="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0"
+ tools:ignore="VectorRaster" >
+
+ <!-- A hard coded color must be used until API >= 21. Then `@color` can be used. -->
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M3,18h6v-2L3,16v2zM3,6v2h18L21,6L3,6zM3,13h12v-2L3,11v2z" />
+</vector>
--- /dev/null
+<!-- `sort_selected_dark` 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 <soren@stoutner.com>. The resulting image is released under the GPLv3+ license. -->
+
+<!-- `tools:ignore="VectorRaster"` removes the lint warning about `android:autoMirrored="true"` not applying to API < 21. -->
+<vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:autoMirrored="true"
+ android:height="24dp"
+ android:width="24dp"
+ android:viewportHeight="24"
+ android:viewportWidth="24"
+ tools:ignore="VectorRaster">
+
+ <!-- A hard coded color must be used until API >= 21. Then `@color` can be used. -->
+ <path
+ android:fillAlpha="0.11635222"
+ android:fillColor="#000000"
+ android:pathData="M3.1525,0L20.8475,0A3.1525,3.1525 0,0 1,24 3.1525L24,20.8475A3.1525,3.1525 0,0 1,20.8475 24L3.1525,24A3.1525,3.1525 0,0 1,0 20.8475L0,3.1525A3.1525,3.1525 0,0 1,3.1525 0z" />
+
+ <!-- A hard coded color must be used until API >= 21. Then `@color` can be used. -->
+ <path
+ android:fillAlpha="1"
+ android:fillColor="#E0E0E0"
+ android:pathData="M3,18H9V16H3ZM3,6v2h18v-2zM3,13H15V11H3Z" />
+</vector>
--- /dev/null
+<!-- `sort_selected_light` 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 <soren@stoutner.com>. The resulting image is released under the GPLv3+ license. -->
+
+<!-- `tools:ignore="VectorRaster"` removes the lint warning about `android:autoMirrored="true"` not applying to API < 21. -->
+<vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:autoMirrored="true"
+ android:height="24dp"
+ android:width="24dp"
+ android:viewportHeight="24"
+ android:viewportWidth="24"
+ tools:ignore="VectorRaster">
+
+ <!-- A hard coded color must be used until API >= 21. Then `@color` can be used. -->
+ <path
+ android:fillAlpha="0.11635222"
+ android:fillColor="#000000"
+ android:pathData="M3.1525,0L20.8475,0A3.1525,3.1525 0,0 1,24 3.1525L24,20.8475A3.1525,3.1525 0,0 1,20.8475 24L3.1525,24A3.1525,3.1525 0,0 1,0 20.8475L0,3.1525A3.1525,3.1525 0,0 1,3.1525 0z" />
+
+ <!-- A hard coded color must be used until API >= 21. Then `@color` can be used. -->
+ <path
+ android:fillAlpha="1"
+ android:fillColor="#ffffff"
+ android:pathData="M3,18H9V16H3ZM3,6v2h18v-2zM3,13H15V11H3Z" />
+</vector>
android:width="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0"
- tools:ignore="VectorRaster">
+ tools:ignore="VectorRaster" >
<!-- A hard coded color must be used until API >= 21. Then `@color` can be used. -->
<path
android:width="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0"
- tools:ignore="VectorRaster">
+ tools:ignore="VectorRaster" >
<!-- A hard coded color must be used until API >= 21. Then `@color` can be used. -->
<path
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2019 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
+
+<menu
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto" >
+
+ <!-- `android:iconTint` can be used once the minimum API >= 26 instead of including a separate drawable for each theme. -->
+ <item
+ android:id="@+id/options_menu_sort"
+ android:title="@string/sort"
+ android:orderInCategory="10"
+ android:icon="?attr/sortIcon"
+ app:showAsAction="always" />
+</menu>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright © 2015-2018 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2015-2019 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright © 2016-2018 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
- Translation 2017-2018 Jose A. León Becerra. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+ Translation 2017-2019 Jose A. León Becerra. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
<string name="display_images">Mostrar imágenes</string>
<string name="view_source">Ver la fuente</string>
<string name="share">Compartir</string>
+ <string name="share_url">Compartir URL</string>
+ <string name="open_with_app">Abrir con App</string>
+ <string name="open_with_browser">Abrir con Navegador</string>
<string name="find_on_page">Buscar en página</string>
<string name="print">Imprimir</string>
<string name="privacy_browser_web_page">Página web de Navegador Privado</string>
<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright © 2017-2018 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2017-2019 Soren Stoutner <soren@stoutner.com>.
- Translation 2017-2018 Francesco Buratti. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+ Translation 2017-2019 Francesco Buratti. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
<string name="display_images">Mostra immagini</string>
<string name="view_source">Visualizza sorgente</string>
<string name="share">Condividi</string>
+ <string name="share_url">Condividi URL</string>
+ <string name="open_with_app">Apri con App</string>
+ <string name="open_with_browser">Apri con il Browser</string>
<string name="find_on_page">Cerca nella pagina</string>
<string name="print">Stampa</string>
<string name="privacy_browser_web_page">Pagina web di Privacy Browser</string>
<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright © 2015-2018 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2015-2019 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
<string name="display_images">Показывать изображения</string>
<string name="view_source">Просмотр исходного кода</string>
<string name="share">Поделиться</string>
+ <string name="share_url">Поделиться URL</string>
+ <string name="open_with_app">Открыть в приложении</string>
+ <string name="open_with_browser">Открыть в браузере</string>
<string name="find_on_page">Найти на странице</string>
<string name="print">Печать</string>
<string name="privacy_browser_web_page">Privacy Browser веб-страница</string>
<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright © 2015-2018 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2015-2019 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
<string name="display_images">Resimleri Göster</string>
<string name="view_source">Kaynağı Görüntüle</string>
<string name="share">Paylaş</string>
+ <string name="share_url">URL Paylaş</string>
+ <string name="open_with_app">Uygulamayla Aç</string>
+ <string name="open_with_browser">Tarayıcıyla Aç</string>
<string name="find_on_page">Sayfada Bul</string>
<string name="print">Yazdır</string>
<string name="privacy_browser_web_page">Privacy Browser Web Sayfası</string>
<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright © 2015-2018 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2015-2019 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
<item name="selectAllIcon">@drawable/select_all_light</item>
<item name="editIcon">@drawable/edit_light</item>
<item name="moveToFolderIcon">@drawable/move_to_folder_light</item>
+ <item name="sortIcon">@drawable/sort_light</item>
<item name="actionBarPopupTheme">@style/PrivacyBrowserPopupsLight</item>
<item name="appBarTextTheme">@style/PrivacyBrowserAppBarWhiteText</item>
<item name="tabLayoutTheme">@style/PrivacyBrowserTabLayoutLight</item>
<item name="selectAllIcon">@drawable/select_all_dark</item>
<item name="editIcon">@drawable/edit_dark</item>
<item name="moveToFolderIcon">@drawable/move_to_folder_dark</item>
+ <item name="sortIcon">@drawable/sort_dark</item>
<item name="appBarTextTheme">@style/PrivacyBrowserAppBarDark</item>
<item name="tabLayoutTheme">@style/PrivacyBrowserTabLayoutDark</item>
<item name="popupsTheme">@style/PrivacyBrowserPopupsDark</item>
<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright © 2017-2018 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2017-2019 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
<attr name="editIcon" format="reference" />
<attr name="moveToFolderIcon" format="reference" />
<attr name="aboutIcon" format="reference" />
+ <attr name="sortIcon" format="reference" />
</resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright © 2015-2018 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2015-2019 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
<string name="bookmarks_database_view">Bookmarks Database View</string>
<string name="all_folders">All Folders</string>
<string name="home_folder">Home Folder</string>
+ <string name="sort">Sort</string>
+ <string name="sorted_by_database_id">Sorted by database ID.</string>
+ <string name="sorted_by_display_order">Sorted by display order.</string>
<string name="database_id">Database ID:</string>
<string name="folder">Folder:</string>
<string name="parent_folder">Parent folder:</string>
<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright © 2015-2018 Soren Stoutner <soren@stoutner.com>.
+ Copyright © 2015-2019 Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
<item name="selectAllIcon">@drawable/select_all_light</item>
<item name="editIcon">@drawable/edit_light</item>
<item name="moveToFolderIcon">@drawable/move_to_folder_light</item>
+ <item name="sortIcon">@drawable/sort_light</item>
<item name="actionBarPopupTheme">@style/PrivacyBrowserPopupsLight</item>
<item name="appBarTextTheme">@style/PrivacyBrowserAppBarWhiteText</item>
<item name="tabLayoutTheme">@style/PrivacyBrowserTabLayoutLight</item>
<item name="selectAllIcon">@drawable/select_all_dark</item>
<item name="editIcon">@drawable/edit_dark</item>
<item name="moveToFolderIcon">@drawable/move_to_folder_dark</item>
+ <item name="sortIcon">@drawable/sort_dark</item>
<item name="appBarTextTheme">@style/PrivacyBrowserAppBarDark</item>
<item name="tabLayoutTheme">@style/PrivacyBrowserTabLayoutDark</item>
<item name="popupsTheme">@style/PrivacyBrowserPopupsDark</item>