Convert AboutViewSourceDialog to Kotlin. https://redmine.stoutner.com/issues/518
authorSoren Stoutner <soren@stoutner.com>
Tue, 14 Jan 2020 22:05:11 +0000 (15:05 -0700)
committerSoren Stoutner <soren@stoutner.com>
Tue, 14 Jan 2020 22:05:11 +0000 (15:05 -0700)
40 files changed:
.idea/gradle.xml
app/build.gradle
app/src/free/res/values-fr/strings.xml
app/src/free/res/values/strings.xml
app/src/main/assets/de/about_changelog_dark.html
app/src/main/assets/de/about_changelog_light.html
app/src/main/assets/de/about_licenses_dark.html
app/src/main/assets/de/about_licenses_light.html
app/src/main/assets/en/about_changelog_dark.html
app/src/main/assets/en/about_changelog_light.html
app/src/main/assets/en/about_licenses_dark.html
app/src/main/assets/en/about_licenses_light.html
app/src/main/assets/es/about_changelog_dark.html
app/src/main/assets/es/about_changelog_light.html
app/src/main/assets/es/about_licenses_dark.html
app/src/main/assets/es/about_licenses_light.html
app/src/main/assets/fr/about_changelog_dark.html
app/src/main/assets/fr/about_changelog_light.html
app/src/main/assets/fr/about_licenses_dark.html
app/src/main/assets/fr/about_licenses_light.html
app/src/main/assets/it/about_changelog_dark.html
app/src/main/assets/it/about_changelog_light.html
app/src/main/assets/it/about_licenses_dark.html
app/src/main/assets/it/about_licenses_light.html
app/src/main/assets/ru/about_changelog_dark.html
app/src/main/assets/ru/about_changelog_light.html
app/src/main/assets/ru/about_licenses_dark.html
app/src/main/assets/ru/about_licenses_light.html
app/src/main/assets/ru/guide_proxies_dark.html
app/src/main/assets/ru/guide_proxies_light.html
app/src/main/assets/tr/about_changelog_dark.html
app/src/main/assets/tr/about_changelog_light.html
app/src/main/assets/tr/about_licenses_dark.html
app/src/main/assets/tr/about_licenses_light.html
app/src/main/java/com/stoutner/privacybrowser/dialogs/AboutViewSourceDialog.java [deleted file]
app/src/main/java/com/stoutner/privacybrowser/dialogs/AboutViewSourceDialog.kt [new file with mode: 0644]
app/src/main/res/layout/view_source_coordinatorlayout.xml
app/src/main/res/values-v21/styles.xml [deleted file]
app/src/main/res/values/styles.xml
build.gradle

index 39e8a677ee1d3068cee07f0d62ef852630c977ad..0d3cc348040e7e3839ce47d0a0506154c3405be4 100644 (file)
@@ -3,9 +3,6 @@
   <component name="GradleSettings">
     <option name="linkedExternalProjectsSettings">
       <GradleProjectSettings>
-        <compositeConfiguration>
-          <compositeBuild compositeDefinitionSource="SCRIPT" />
-        </compositeConfiguration>
         <option name="distributionType" value="LOCAL" />
         <option name="externalProjectPath" value="$PROJECT_DIR$" />
         <option name="gradleHome" value="$APPLICATION_HOME_DIR$/gradle/gradle-2.14.1" />
@@ -16,6 +13,7 @@
           </set>
         </option>
         <option name="resolveModulePerSourceSet" value="false" />
+        <option name="testRunner" value="PLATFORM" />
       </GradleProjectSettings>
     </option>
   </component>
index ff5a8a82101288e640ec62d8e82817b40370dcd3..5ca89f82384ef4b2bb014b3d7b83a28eda8c4d88 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+ * Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
  *
  * This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
  *
@@ -18,6 +18,8 @@
  */
 
 apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android-extensions'
+apply plugin: 'kotlin-android'
 
 android {
     compileSdkVersion 29
@@ -64,6 +66,10 @@ android {
     }
 }
 
+repositories {
+    mavenCentral()
+}
+
 dependencies {
     implementation fileTree(include: ['*.jar'], dir: 'libs')
 
@@ -73,12 +79,16 @@ dependencies {
     implementation 'androidx.appcompat:appcompat:1.1.0'
     implementation 'androidx.cardview:cardview:1.0.0'
     implementation 'androidx.coordinatorlayout:coordinatorlayout:1.1.0'
+    implementation "androidx.core:core-ktx:1.1.0"
     implementation 'androidx.drawerlayout:drawerlayout:1.0.0'
     implementation 'androidx.preference:preference:1.1.0'
     implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0'
     implementation 'androidx.viewpager:viewpager:1.0.0'
     implementation 'androidx.webkit:webkit:1.1.0'
 
+    // Include the Kotlin standard libraries
+    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.61"
+
     // Include the Google material library.
     implementation 'com.google.android.material:material:1.0.0'
 
index 80d4ae22c665c9042c245bfac5b8e62556cd3ef9..ac06131933b4b599c43a9b37a7a35fdaee390eec 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 
 <!--
-  Copyright © 2015-2018 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2015-2019 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2019 Kévin LE FLOHIC <kevinliste@framalistes.org>.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
index cead48b1995857a766d2bb4384a2b7eef986eb7e..4cbb628c63f7d105a2e0df6226dcc32d1a0862bf 100644 (file)
@@ -1,7 +1,7 @@
 <?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>.
 
index 87bc1fbd4bae1dcbfe3bf8c563be2d110e26aa6b..eed6ff180e7537d998efda00491cd18bda008701 100644 (file)
@@ -1,7 +1,7 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2019 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2019-2020 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   Translation 2018 Stefan Erhardt.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -30,8 +30,8 @@
     </head>
 
     <body>
-        <h3>3.3 (version code 47)</h3>
-        <p>3. Januar 2020 - Mindest-API 19, Ziel-API 29</p>
+        <h3><a href="https://www.stoutner.com/privacy-browser-3-3/">3.3</a> (version code 47)</h3>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=54153efaffb2447307fbd8be569529d0118b823d">3. Januar 2020</a> - Mindest-API 19, Ziel-API 29</p>
         <ul>
             <li>Unterstützung benutzerdefinierter Proxies wie <a href="https://redmine.stoutner.com/issues/486">SOCKS-Proxies</a>,
                 und <a href="https://redmine.stoutner.com/issues/355">I2P</a>hinzugefügt.</li>
index 6c804c794f71f72fe510ae15a2dd0c15aaf2925f..817da74b7b341d20cd5ff4e11fe8261dd051c989 100644 (file)
@@ -1,7 +1,7 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2019 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2019-2020 Bernhard G. Keller.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   Translation 2018 Stefan Erhardt.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -30,8 +30,8 @@
     </head>
 
     <body>
-        <h3>3.3 (version code 47)</h3>
-        <p>3. Januar 2020 - Mindest-API 19, Ziel-API 29</p>
+        <h3><a href="https://www.stoutner.com/privacy-browser-3-3/">3.3</a> (version code 47)</h3>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=54153efaffb2447307fbd8be569529d0118b823d">3. Januar 2020</a> - Mindest-API 19, Ziel-API 29</p>
         <ul>
             <li>Unterstützung benutzerdefinierter Proxies wie <a href="https://redmine.stoutner.com/issues/486">SOCKS-Proxies</a>,
                 und <a href="https://redmine.stoutner.com/issues/355">I2P</a>hinzugefügt.</li>
index 374ae106b7b90f95133f593369db478dd8532b2e..6f8b1a3d62aea95bf818208365410dee28eca316 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2016 Aaron Gerlach <aaron@gerlach.com>.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -27,7 +27,7 @@
 
     <body>
         <h3>Copyright</h3>
-        <p>Privacy Browser ist copyright © 2015-2019 von <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+        <p>Privacy Browser ist copyright © 2015-2020 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.
index 503d12a329c17b52861b005a679a09fd3facd12a..b7334fb95711564fd4f74771e112b4f1b123fda5 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2016 Aaron Gerlach <aaron@gerlach.com>.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -26,7 +26,7 @@
 
     <body>
         <h3>Copyright</h3>
-        <p>Privacy Browser ist copyright © 2015-2019 von <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+        <p>Privacy Browser ist copyright © 2015-2020 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.
index cba69b6ebe1cfb8597efa6662e2ee253e160ed05..dbcef869a70717d4d22cd64e7dcced15eebe8bd1 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
 
@@ -24,8 +24,8 @@
     </head>
 
     <body>
-        <h3>3.3 (version code 47)</h3>
-        <p>3 January 2020 - minimum API 19, target API 29</p>
+        <h3><a href="https://www.stoutner.com/privacy-browser-3-3/">3.3</a> (version code 47)</h3>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=54153efaffb2447307fbd8be569529d0118b823d">3 January 2020</a> - minimum API 19, target API 29</p>
         <ul>
             <li>Add support for custom proxies, including <a href="https://redmine.stoutner.com/issues/486">SOCKS proxies</a>,
                 and include an entry for <a href="https://redmine.stoutner.com/issues/355">I2P</a>.</li>
index de7271b6b429fad1f2bc4ffaf7fe41fc0f9c074f..bcbc991a8c780a34ab5ebb35494d21c55727a146 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
 
@@ -24,8 +24,8 @@
     </head>
 
     <body>
-        <h3>3.3 (version code 47)</h3>
-        <p>3 January 2020 - minimum API 19, target API 29</p>
+        <h3><a href="https://www.stoutner.com/privacy-browser-3-3/">3.3</a> (version code 47)</h3>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=54153efaffb2447307fbd8be569529d0118b823d">3 January 2020</a> - minimum API 19, target API 29</p>
         <ul>
             <li>Add support for custom proxies, including <a href="https://redmine.stoutner.com/issues/486">SOCKS proxies</a>,
                 and include an entry for <a href="https://redmine.stoutner.com/issues/355">I2P</a>.</li>
index 3bf34f6f1a7d571e75c026cca39f20b44c3e9297..d35e89267608a803a3840afbdab84357b4b8bb98 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
 
@@ -25,7 +25,7 @@
 
     <body>
         <h3>Copyright</h3>
-        <p>Privacy Browser copyright © 2015-2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+        <p>Privacy Browser copyright © 2015-2020 <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.
index 87e3895da087c75611c32492d8bc11483eef4a04..94fc96b7cc586ebbff6c6ec895d31a7a5307ac0f 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
 
@@ -25,7 +25,7 @@
 
     <body>
         <h3>Copyright</h3>
-        <p>Privacy Browser copyright © 2015-2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+        <p>Privacy Browser copyright © 2015-2020 <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.
index 23b7ced5473c7ae7b952c3a6fac01b316faff18a..be43780508fff00458827b8a0e1d336eb8e843b0 100644 (file)
@@ -1,7 +1,7 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2017-2019 Jose A. León.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2017-2020 Jose A. León.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
 
@@ -26,8 +26,8 @@
     </head>
 
     <body>
-        <h3>3.3 (código de versión 47)</h3>
-        <p>3 de enero de 2020 - API mínimo 19, API dirigido 29</p>
+        <h3><a href="https://www.stoutner.com/privacy-browser-3-3/">3.3</a> (código de versión 47)</h3>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=54153efaffb2447307fbd8be569529d0118b823d">3 de enero de 2020</a> - API mínimo 19, API dirigido 29</p>
         <ul>
             <li>Añadir soporte para proxis personalizados, incluyendo <a href="https://redmine.stoutner.com/issues/486">proxis SOCKS</a>,
                 e incluir una entrada para <a href="https://redmine.stoutner.com/issues/355">I2P</a>.</li>
index 87f1e0f6ea34b4d69fd856a82d888048906dccae..5385a29e300795ab0a4e323b4df68b3d9a65d17d 100644 (file)
@@ -1,7 +1,7 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2017-2019 Jose A. León.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2017-2020 Jose A. León.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
 
@@ -26,8 +26,8 @@
     </head>
 
     <body>
-        <h3>3.3 (código de versión 47)</h3>
-        <p>3 de enero de 2020 - API mínimo 19, API dirigido 29</p>
+        <h3><a href="https://www.stoutner.com/privacy-browser-3-3/">3.3</a> (código de versión 47)</h3>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=54153efaffb2447307fbd8be569529d0118b823d">3 de enero de 2020</a> - API mínimo 19, API dirigido 29</p>
         <ul>
             <li>Añadir soporte para proxis personalizados, incluyendo <a href="https://redmine.stoutner.com/issues/486">proxis SOCKS</a>,
                 e incluir una entrada para <a href="https://redmine.stoutner.com/issues/355">I2P</a>.</li>
index 73cd0f46ea8eb80a7984c5f6557bf7e3501b47de..1efd9fab7b2b6a53c8d9416cc359a18554ce1ef9 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2017-2019 Jose A. León.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -27,7 +27,7 @@
 
     <body>
         <h3>Derechos de autor</h3>
-        <p>Navegador Privado tiene derechos de autor © 2015-2019 por <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+        <p>Navegador Privado tiene derechos de autor © 2015-2020 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>.
index deb7a040ffdc1020aaa866b0527d7b495da0ed6c..c365df02b05774b6eb2d1c1294e1043cb84dc5a2 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2017-2019 Jose A. León.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -27,7 +27,7 @@
 
     <body>
         <h3>Derechos de autor</h3>
-        <p>Navegador Privado tiene derechos de autor © 2015-2019 por <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+        <p>Navegador Privado tiene derechos de autor © 2015-2020 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>.
index fd5f6f100f5e7ba7b59a05d0bac6e616d46b547b..26776a4d03affa31cbc56a17959d478c09a5f88a 100644 (file)
@@ -1,7 +1,7 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2019 Kévin LE FLOHIC <kevinliste@framalistes.org>.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2019-2020 Kévin LE FLOHIC <kevinliste@framalistes.org>.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
 
@@ -26,8 +26,8 @@
     </head>
 
     <body>
-        <h3>3.3 (version du code 47)</h3>
-        <p>3 Janvier 2020 - API minimale : 19, API optimale : 29</p>
+        <h3><a href="https://www.stoutner.com/privacy-browser-3-3/">3.3</a> (version du code 47)</h3>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=54153efaffb2447307fbd8be569529d0118b823d">3 Janvier 2020</a> - API minimale : 19, API optimale : 29</p>
         <ul>
             <li>Ajout de la prise en charge des proxys personnalisés, y compris les <a href="https://redmine.stoutner.com/issues/486">proxys SOCKS</a>,
                 et inclut une entrée pour <a href="https://redmine.stoutner.com/issues/355">I2P</a>.</li>
index 313123412df235f8ebfdd07db7f5066b2c75fd84..ded861be0f3721ee205111467a024c0cb3ba84c6 100644 (file)
@@ -1,7 +1,7 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2019 Kévin LE FLOHIC <kevinliste@framalistes.org>.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2019-2020 Kévin LE FLOHIC <kevinliste@framalistes.org>.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
 
@@ -26,8 +26,8 @@
     </head>
 
     <body>
-        <h3>3.3 (version du code 47)</h3>
-        <p>3 Janvier 2020 - API minimale : 19, API optimale : 29</p>
+        <h3><a href="https://www.stoutner.com/privacy-browser-3-3/">3.3</a> (version du code 47)</h3>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=54153efaffb2447307fbd8be569529d0118b823d">3 Janvier 2020</a> - API minimale : 19, API optimale : 29</p>
         <ul>
             <li>Ajout de la prise en charge des proxys personnalisés, y compris les <a href="https://redmine.stoutner.com/issues/486">proxys SOCKS</a>,
                 et inclut une entrée pour <a href="https://redmine.stoutner.com/issues/355">I2P</a>.</li>
index becbb455f6abff128c493f69a582cccef9a84257..9fd954e14235e8c254378257181b5627023cd7b5 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2019 Kévin LE FLOHIC <kevinliste@framalistes.org>.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -27,7 +27,7 @@
 
     <body>
         <h3>Copyright</h3>
-        <p>Privacy Browser copyright © 2015-2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+        <p>Privacy Browser copyright © 2015-2020 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
 
         <h3>Licence</h3>
         <p>rivacy Browser est publié sous la <a href="https://www.gnu.org/licenses/gpl-3.0.html">licence GPLv3+</a>. Le texte complet de la licence est ci-dessous.
index 7640e9fe4dbd43a5c5ca8a889f2e58a26e46432f..c70af653a8af0c290222ef476ee44d86d0d6b776 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2019 Kévin LE FLOHIC <kevinliste@framalistes.org>.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -27,7 +27,7 @@
 
     <body>
         <h3>Copyright</h3>
-        <p>Privacy Browser copyright © 2015-2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+        <p>Privacy Browser copyright © 2015-2020 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
 
         <h3>Licence</h3>
         <p>rivacy Browser est publié sous la <a href="https://www.gnu.org/licenses/gpl-3.0.html">licence GPLv3+</a>. Le texte complet de la licence est ci-dessous.
index f664865b29d1143e4632d2deda2a7bbf7a009cd6..cde349405243f4d8c4b53629985ebc7ef5bc5f16 100644 (file)
@@ -1,7 +1,7 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2017-2019 Francesco Buratti.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2017-2020 Francesco Buratti.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
 
@@ -26,8 +26,8 @@
     </head>
 
     <body>
-        <h3>3.3 (versione codice 47)</h3>
-        <p>3 Gennaio 2020 - minima API 19, target API 29</p>
+        <h3><a href="https://www.stoutner.com/privacy-browser-3-3/">3.3</a> (versione codice 47)</h3>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=54153efaffb2447307fbd8be569529d0118b823d">3 Gennaio 2020</a> - minima API 19, target API 29</p>
         <ul>
             <li>Aggiunto il supporto per proxy personalizzati, inclusi i <a href="https://redmine.stoutner.com/issues/486">SOCKS proxies</a>,
                 e inclusa la possibilità di utilizzare <a href="https://redmine.stoutner.com/issues/355">I2P</a>.</li>
index 28645c0f0e0fd33d73c233bdffad3565db69c158..1b64f6c34e848ef1f4b9624d817131a3663826d2 100644 (file)
@@ -1,7 +1,7 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
-  Translation 2017-2019 Francesco Buratti.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+  Translation 2017-2020 Francesco Buratti.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
 
@@ -26,8 +26,8 @@
     </head>
 
     <body>
-        <h3>3.3 (versione codice 47)</h3>
-        <p>3 Gennaio 2020 - minima API 19, target API 29</p>
+        <h3><a href="https://www.stoutner.com/privacy-browser-3-3/">3.3</a> (versione codice 47)</h3>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=54153efaffb2447307fbd8be569529d0118b823d">3 Gennaio 2020</a> - minima API 19, target API 29</p>
         <ul>
             <li>Aggiunto il supporto per proxy personalizzati, inclusi i <a href="https://redmine.stoutner.com/issues/486">SOCKS proxies</a>,
                 e inclusa la possibilità di utilizzare <a href="https://redmine.stoutner.com/issues/355">I2P</a>.</li>
index 5824df425a3e33ccae381a7fe75196c4c8780321..c117f94c98c434075b1ed6abddcf873e1b69fe02 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2017-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2017-2020 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2017-2019 Francesco Buratti.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -25,7 +25,7 @@
 
     <body>
         <h3>Copyright</h3>
-        <p>Privacy Browser copyright © 2015-2019: <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+        <p>Privacy Browser copyright © 2015-2020: <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>.
index 84e201c0c7f76931e5af3681b198f9418ef44bc0..bb3f7d6efbd958221a95fc73c632c467b4ba2827 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2017-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2017-2020 Soren Stoutner <soren@stoutner.com>.
 
   Translation 2017-2019 Francesco Buratti.  Copyright assigned to Soren Stoutner <soren@stoutner.com>.
 
@@ -25,7 +25,7 @@
 
     <body>
         <h3>Copyright</h3>
-        <p>Privacy Browser copyright © 2015-2019: <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+        <p>Privacy Browser copyright © 2015-2020: <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>.
index 589462e888e34c44fd833bdd1f3c3b62a14a70bb..24ae1d413a311bb4a22a0d48276ba52eb2c15a74 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
 
@@ -24,8 +24,8 @@
     </head>
 
     <body>
-        <h3>3.3 (код версии 47)</h3>
-        <p>3 января 2020 года - minimum API 19, target API 29</p>
+        <h3><a href="https://www.stoutner.com/privacy-browser-3-3/">3.3</a> (код версии 47)</h3>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=54153efaffb2447307fbd8be569529d0118b823d">3 января 2020 года</a> - minimum API 19, target API 29</p>
         <ul>
             <li>Добавлена поддержка пользовательских прокси, включая <a href="https://redmine.stoutner.com/issues/486">SOCKS-прокси</a>, и <a href="https://redmine.stoutner.com/issues/355">I2P</a>.</li>
             <li>Сокращено <a href="https://redmine.stoutner.com/issues/491">название приложения</a> в лаунчере.</li>
index 2989c34f55530c08ccf5d50440312bdf755e4391..dd6cca5b2b152a990b82eb396b8fc5e8dbdd515b 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
 
@@ -24,8 +24,8 @@
     </head>
 
     <body>
-        <h3>3.3 (код версии 47)</h3>
-        <p>3 января 2020 года - minimum API 19, target API 29</p>
+        <h3><a href="https://www.stoutner.com/privacy-browser-3-3/">3.3</a> (код версии 47)</h3>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=54153efaffb2447307fbd8be569529d0118b823d">3 января 2020 года</a> - minimum API 19, target API 29</p>
         <ul>
             <li>Добавлена поддержка пользовательских прокси, включая <a href="https://redmine.stoutner.com/issues/486">SOCKS-прокси</a>, и <a href="https://redmine.stoutner.com/issues/355">I2P</a>.</li>
             <li>Сокращено <a href="https://redmine.stoutner.com/issues/491">название приложения</a> в лаунчере.</li>
index a97ac74789bbbfd60f7f6a4cccd0c6bb6139bb9c..8a6a0532a4295675fac325c6f8d320747b6b0636 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
 
@@ -25,7 +25,7 @@
 
     <body>
         <h3>Авторские права</h3>
-        <p>Авторские права Privacy Browser © 2015-2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+        <p>Авторские права Privacy Browser © 2015-2020 <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>. Полный текст лицензии приведен ниже.
index 96f048ca1e584ea21fd61cc8fd0716b1251d0270..a9d95e890e6e7b1ad3c4d92c55caedee4334dff6 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
 
@@ -25,7 +25,7 @@
 
     <body>
         <h3>Авторские права</h3>
-        <p>Авторские права Privacy Browser © 2015-2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+        <p>Авторские права Privacy Browser © 2015-2020 <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>. Полный текст лицензии приведен ниже.
index 61f3b91715874904ceedfc05c1b41572cb965577..170952635317e2f57c3ed05b5e9c2afb02f8d45f 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
 
@@ -24,7 +24,7 @@
     </head>
 
     <body>
-        <h3><img class="title" src="../shared_images/vpn_key_blue_dark.png"> Proxies and Their Limits</h3>
+        <h3><img class="title" src="../shared_images/vpn_key_blue_dark.png"> Прокси и их ограничения</h3>
 
         <p>Существуют две основные отрицательные категории субъектов, которые нарушают конфиденциальность в интернете: злонамеренные правительства, имеющие доступ к интернет-провайдерам и крупные корпорации,
             которые управляют социальными и рекламными сетями.
index 858955242ca7dbf951c38790691c37b768d87b34..7d1fb9dde7cdc7d510f83524eb117d510d2abc4d 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
 
@@ -24,7 +24,7 @@
     </head>
 
     <body>
-        <h3><img class="title" src="../shared_images/vpn_key_blue_light.png"> Proxies and Their Limits</h3>
+        <h3><img class="title" src="../shared_images/vpn_key_blue_light.png"> Прокси и их ограничения</h3>
 
         <p>Существуют две основные отрицательные категории субъектов, которые нарушают конфиденциальность в интернете: злонамеренные правительства, имеющие доступ к интернет-провайдерам и крупные корпорации,
             которые управляют социальными и рекламными сетями.
index 7238ad807b772455c5ccdc53cfe7ae4672e41a75..e6103d160602dc9e1c5f7e22a9e4cdbef140a305 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
 
@@ -24,8 +24,8 @@
     </head>
 
     <body>
-        <h3>3.3 (version code 47)</h3>
-        <p>3 Ocak 2020 - minimum API 19, target API 29</p>
+        <h3><a href="https://www.stoutner.com/privacy-browser-3-3/">3.3</a> (version code 47)</h3>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=54153efaffb2447307fbd8be569529d0118b823d">3 Ocak 2020</a> - minimum API 19, target API 29</p>
         <ul>
             <li>Add support for custom proxies, including <a href="https://redmine.stoutner.com/issues/486">SOCKS proxies</a>,
                 and include an entry for <a href="https://redmine.stoutner.com/issues/355">I2P</a>.</li>
index e508ee561d8956c93d1554e9f5ac70421ac21360..9e4267a0adcfd6c6069daabba93929dec33dff6c 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
 
@@ -24,8 +24,8 @@
     </head>
 
     <body>
-        <h3>3.3 (version code 47)</h3>
-        <p>3 Ocak 2020 - minimum API 19, target API 29</p>
+        <h3><a href="https://www.stoutner.com/privacy-browser-3-3/">3.3</a> (version code 47)</h3>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=54153efaffb2447307fbd8be569529d0118b823d">3 Ocak 2020</a> - minimum API 19, target API 29</p>
         <ul>
             <li>Add support for custom proxies, including <a href="https://redmine.stoutner.com/issues/486">SOCKS proxies</a>,
                 and include an entry for <a href="https://redmine.stoutner.com/issues/355">I2P</a>.</li>
index 94834d72d69bbc958020478f2956a853eba2f1fe..f591801015b1a0436a13750520e3317c15a84b10 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
 
@@ -25,7 +25,7 @@
 
     <body>
         <h3>Telif Hakkı</h3>
-        <p>Privacy Browser telif hakkı © 2015-2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+        <p>Privacy Browser telif hakkı © 2015-2020 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
 
         <h3>Lisans</h3>
         <p>Privacy Browser <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+</a> lisansı altında yayınlandı. Lisansın tam metni aşağıdadır.
index 90f2364b151087ab908d13cd53f4fc991dca6bd6..4fe9764a13552a4fbb39df304615ed837fb648a7 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
 
@@ -25,7 +25,7 @@
 
     <body>
         <h3>Telif Hakkı</h3>
-        <p>Privacy Browser telif hakkı © 2015-2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+        <p>Privacy Browser telif hakkı © 2015-2020 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
 
         <h3>Lisans</h3>
         <p>Privacy Browser <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+</a> lisansı altında yayınlandı. Lisansın tam metni aşağıdadır.
diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/AboutViewSourceDialog.java b/app/src/main/java/com/stoutner/privacybrowser/dialogs/AboutViewSourceDialog.java
deleted file mode 100644 (file)
index bc565a6..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright © 2018-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/>.
- */
-
-package com.stoutner.privacybrowser.dialogs;
-
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.os.Bundle;
-import android.view.WindowManager;
-
-import androidx.annotation.NonNull;
-import androidx.fragment.app.DialogFragment;
-import androidx.preference.PreferenceManager;
-
-import com.stoutner.privacybrowser.R;
-
-public class AboutViewSourceDialog extends DialogFragment {
-    @Override
-    @NonNull
-    public Dialog onCreateDialog(Bundle savedInstanceState) {
-        // Get the context.
-        Context context = getContext();
-
-        // Remove the incorrect lint warning below that the context might be null.
-        assert context != null;
-
-        // Get a handle for the shared preferences.
-        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
-
-        // Get the screenshot and theme preferences.
-        boolean allowScreenshots = sharedPreferences.getBoolean("allow_screenshots", false);
-        boolean darkTheme = sharedPreferences.getBoolean("dark_theme", false);
-
-        // Use a builder to create the alert dialog.
-        AlertDialog.Builder dialogBuilder;
-
-        // Set the style and the icon according to the theme.
-        if (darkTheme) {
-            dialogBuilder = new AlertDialog.Builder(getActivity(), R.style.PrivacyBrowserAlertDialogDark);
-            dialogBuilder.setIcon(R.drawable.about_dark);
-        } else {
-            dialogBuilder = new AlertDialog.Builder(getActivity(), R.style.PrivacyBrowserAlertDialogLight);
-            dialogBuilder.setIcon(R.drawable.about_light);
-        }
-
-        // Set an `onClick` listener on the negative button.  Using `null` as the listener closes the dialog without doing anything else.
-        dialogBuilder.setNegativeButton(R.string.close, null);
-
-        // Set the title.
-        dialogBuilder.setTitle(R.string.about_view_source);
-
-        // Set the text.
-        dialogBuilder.setMessage(R.string.about_view_source_message);
-
-        // Create an alert dialog from the alert dialog builder.
-        AlertDialog alertDialog = dialogBuilder.create();
-
-        // Disable screenshots if not allowed.
-        if (!allowScreenshots) {
-            // Remove the warning below that `getWindow()` might be null.
-            assert alertDialog.getWindow() != null;
-
-            // Disable screenshots.
-            alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
-        }
-
-        // Return the alert dialog.
-        return alertDialog;
-    }
-}
diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/AboutViewSourceDialog.kt b/app/src/main/java/com/stoutner/privacybrowser/dialogs/AboutViewSourceDialog.kt
new file mode 100644 (file)
index 0000000..21b8c4a
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Copyright © 2018-2020 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/>.
+ */
+
+package com.stoutner.privacybrowser.dialogs
+
+import android.app.AlertDialog
+import android.app.Dialog
+import android.os.Bundle
+import android.view.WindowManager
+import androidx.fragment.app.DialogFragment
+import androidx.preference.PreferenceManager
+
+import com.stoutner.privacybrowser.R
+
+class AboutViewSourceDialog : DialogFragment() {
+    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
+        // Get a handle for the shared preferences.
+        val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
+
+        // Get the screenshot and theme preferences.
+        val allowScreenshots = sharedPreferences.getBoolean("allow_screenshots", false)
+        val darkTheme = sharedPreferences.getBoolean("dark_theme", false)
+
+        // Use a builder to create the alert dialog.
+        val dialogBuilder: AlertDialog.Builder
+
+        // Set the style and the icon according to the theme.
+        if (darkTheme) {
+            // Use a dark style.
+            dialogBuilder = AlertDialog.Builder(context, R.style.PrivacyBrowserAlertDialogDark)
+
+            // Set a dark icon.
+            dialogBuilder.setIcon(R.drawable.about_dark)
+        } else {
+            // Use a light style.
+            dialogBuilder = AlertDialog.Builder(context, R.style.PrivacyBrowserAlertDialogLight)
+
+            // Set a light icon.
+            dialogBuilder.setIcon(R.drawable.about_light)
+        }
+
+        // Set the title.
+        dialogBuilder.setTitle(R.string.about_view_source)
+
+        // Set the text.
+        dialogBuilder.setMessage(R.string.about_view_source_message)
+
+        // Set a listener on the close button.  Using `null` as the listener closes the dialog without doing anything else.
+        dialogBuilder.setNegativeButton(R.string.close, null)
+
+        // Create an alert dialog from the alert dialog builder.
+        val alertDialog = dialogBuilder.create()
+
+        // Disable screenshots if not allowed.
+        if (!allowScreenshots) {
+            alertDialog.window!!.addFlags(WindowManager.LayoutParams.FLAG_SECURE)
+        }
+
+        // Return the alert dialog.
+        return alertDialog
+    }
+}
\ No newline at end of file
index fa1ffd1c3271879577ac0090ea51b554ef1c9ea4..3c3a07690e14e33508f1b37f3d0df009c5be960b 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 
 <!--
-  Copyright © 2017-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2017-2020 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
 
@@ -37,7 +37,7 @@
         android:layout_width="match_parent"
         android:orientation="vertical" >
 
-        <!-- The app bar layout theme has to be defined here because the activity uses a `NoActionBar` theme. -->
+        <!-- The app bar layout theme may not need to be specified here.  But more testing on all APIs needs to be done before it can be removed. -->
         <com.google.android.material.appbar.AppBarLayout
             android:layout_height="wrap_content"
             android:layout_width="match_parent"
diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml
deleted file mode 100644 (file)
index 6d4b839..0000000
+++ /dev/null
@@ -1,223 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-  Copyright © 2015-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/>. -->
-
-<resources>
-    <!-- Light theme styles. -->
-
-    <!-- `android:windowTranslucentStatus` makes the system status bar translucent.  When it is specified the root layout should include `android:fitsSystemWindows="true"`. -->
-    <style name="PrivacyBrowserLight" parent="Theme.AppCompat.Light.NoActionBar" >
-        <item name="aboutIcon">@drawable/about_light</item>
-        <item name="addTabIconTintColor">@color/gray_700</item>
-        <item name="android:textColorHighlight">@color/blue_200</item>
-        <item name="android:textColorPrimary">@color/primary_text_color_selector_light</item>
-        <item name="android:windowTranslucentStatus">true</item>
-        <item name="appBarTheme">@style/PrivacyBrowserAppBarLight</item>
-        <item name="colorAccent">@color/blue_700</item>
-        <item name="dialogTabLayoutTheme">@style/PrivacyBrowserTabLayoutDialogLight</item>
-        <item name="mainStatusBarBackground">@color/gray_500</item>
-        <item name="navigationHeaderBackground">@color/blue_700</item>
-        <item name="navigationHeaderTextColor">@color/white</item>
-        <item name="navigationIconTintColor">@color/blue_800</item>
-        <item name="findOnPageIconTintColor">@color/blue_800</item>
-        <item name="progressTintColor">@color/blue_700</item>
-        <item name="redText">@color/red_a700</item>
-        <item name="sslHeader">@color/blue_700</item>
-        <item name="sslTitle">@color/blue_900</item>
-        <item name="urlHistoryText">@color/black</item>
-        <item name="viewSourceIconTintColor">@color/black</item>
-        <item name="webViewBackground">@color/gray_50</item>
-    </style>
-
-    <!-- `windowActionModeOverlay` makes the contextual app bar cover the support app bar. -->
-    <style name="PrivacyBrowserLight.SecondaryActivity" >
-        <item name="windowActionModeOverlay">true</item>
-        <item name="android:windowTranslucentStatus">false</item>
-        <item name="colorPrimaryDark">@color/blue_700</item>
-        <item name="android:statusBarColor">@color/blue_900</item>
-        <item name="android:textColorHighlight">@color/blue_200</item>
-        <item name="android:actionModeBackground">@color/blue_700</item>
-        <item name="spinnerHeaderTextColor">@color/white</item>
-        <item name="spinnerBackground">@color/blue_750</item>
-        <item name="spinnerTextColorSelector">@color/spinner_color_selector_light</item>
-        <item name="appbarSpinnerTextColorSelector">@color/appbar_spinner_color_selector_light</item>
-        <item name="buttonBackgroundColorSelector">@color/button_background_color_selector_light</item>
-        <item name="buttonTextColorSelector">@color/button_text_color_selector_light</item>
-        <item name="listSelectorDrawable">@drawable/list_selector_light</item>
-        <item name="aboutTitle">@color/blue_900</item>
-        <item name="aboutText">@color/blue_700</item>
-        <item name="aboutBackground">@color/white</item>
-        <item name="domainSettingsIconTintColor">@color/blue_800</item>
-        <item name="deleteIcon">@drawable/delete_light</item>
-        <item name="addIcon">@drawable/add_light</item>
-        <item name="addBookmarkIcon">@drawable/create_bookmark_light</item>
-        <item name="addFolderIcon">@drawable/create_folder_light</item>
-        <item name="copyIcon">@drawable/copy_light</item>
-        <item name="clearIcon">@drawable/clear_light</item>
-        <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="saveIcon">@drawable/save_light</item>
-        <item name="sortIcon">@drawable/sort_light</item>
-        <item name="actionBarPopupTheme">@style/PrivacyBrowserPopupsLight</item>
-        <item name="appBarTextTheme">@style/PrivacyBrowserAppBarWhiteText</item>
-        <item name="popupsTheme">@style/PrivacyBrowserPopupsLight</item>
-        <item name="tabLayoutTheme">@style/PrivacyBrowserTabLayoutLight</item>
-    </style>
-
-    <!-- `colorPrimaryDark` is the color of the status bar. -->
-    <style name="PrivacyBrowserSettingsLight" parent="Theme.AppCompat.Light.DarkActionBar" >
-        <item name="colorPrimary">@color/blue_700</item>
-        <item name="colorPrimaryDark">@color/blue_900</item>
-        <item name="colorAccent">@color/blue_700</item>
-        <item name="userAgentIcon">@drawable/user_agent_light</item>
-        <item name="searchIcon">@drawable/search_enabled_light</item>
-        <item name="homepageIcon">@drawable/home_enabled_light</item>
-        <item name="fontSizeIcon">@drawable/font_size_light</item>
-    </style>
-
-    <!-- `ThemeOverlay.AppCompat.ActionBar` makes the hamburger icons dark. -->
-    <style name="PrivacyBrowserAppBarLight" parent="ThemeOverlay.AppCompat.ActionBar" />
-
-    <!-- `ThemeOverlay.AppCompat.Dark.ActionBar` makes the text and the icons in the AppBar white. -->
-    <style name="PrivacyBrowserAppBarWhiteText" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
-
-    <!-- `ThemeOverlay.AppCompat.Light` makes the popups have a light background with dark text. -->
-    <style name="PrivacyBrowserPopupsLight" parent="ThemeOverlay.AppCompat.Light" />
-
-    <!-- Configure the About and Guide `TabLayouts`. -->
-    <style name="PrivacyBrowserTabLayoutLight" parent="Widget.Design.TabLayout" >
-        <item name="android:textColorPrimary">@color/white</item>
-        <item name="android:textColorSecondary">@color/blue_100</item>
-        <item name="tabIndicatorColor">@color/white</item>
-    </style>
-
-    <style name="PrivacyBrowserTabLayoutDialogLight" parent="Widget.Design.TabLayout" >
-        <item name="android:textColorPrimary">@color/blue_700</item>
-        <item name="android:textColorSecondary">@color/blue_700_50</item>
-    </style>
-
-    <style name="PrivacyBrowserAlertDialogLight" parent="Theme.AppCompat.Light.Dialog.Alert" >
-        <item name="colorAccent">@color/blue_700</item>
-    </style>
-
-    <style name="PrivacyBrowserProgressBar" parent="Widget.AppCompat.ProgressBar.Horizontal" >
-        <item name="android:indeterminateDrawable">@android:drawable/progress_horizontal</item>
-    </style>
-
-
-    <!-- Dark theme styles. -->
-
-    <!-- `android:windowTranslucentStatus` makes the system status bar translucent.  When it is specified the root layout should include `android:fitsSystemWindows="true"`. -->
-    <style name="PrivacyBrowserDark" parent="Theme.AppCompat.NoActionBar" >
-        <item name="aboutIcon">@drawable/about_dark</item>
-        <item name="addTabIconTintColor">@color/gray_400</item>
-        <item name="android:textColorHighlight">@color/blue_800</item>
-        <item name="android:textColorPrimary">@color/primary_text_color_selector_dark</item>
-        <item name="android:windowTranslucentStatus">true</item>
-        <item name="appBarTheme">@style/PrivacyBrowserAppBarDark</item>
-        <item name="colorAccent">@color/blue_600</item>
-        <item name="mainStatusBarBackground">@color/black</item>
-        <item name="navigationHeaderBackground">@color/blue_800</item>
-        <item name="navigationHeaderTextColor">@color/gray_300</item>
-        <item name="findOnPageIconTintColor">@color/blue_600</item>
-        <item name="navigationIconTintColor">@color/blue_600</item>
-        <item name="progressTintColor">@color/blue_600</item>
-        <item name="redText">@color/red_900</item>
-        <item name="sslHeader">@color/blue_400</item>
-        <item name="sslTitle">@color/blue_700</item>
-        <item name="urlHistoryText">@color/gray_200</item>
-        <item name="viewSourceIconTintColor">@color/gray_300</item>
-        <item name="webViewBackground">@color/gray_900</item>
-    </style>
-
-    <!-- `windowActionModeOverlay` makes the contextual app bar cover the support app bar.  `colorPrimaryDark` goes behind the status bar, which is then darkened by the overlay.-->
-    <style name="PrivacyBrowserDark.SecondaryActivity" >
-        <item name="windowActionModeOverlay">true</item>
-        <item name="android:windowTranslucentStatus">false</item>
-        <item name="colorPrimaryDark">@color/blue_800</item>
-        <item name="android:statusBarColor">@color/blue_900</item>
-        <item name="android:actionModeBackground">@color/blue_800</item>
-        <item name="spinnerHeaderTextColor">@color/gray_300</item>
-        <item name="spinnerBackground">@color/blue_830</item>
-        <item name="spinnerTextColorSelector">@color/spinner_color_selector_dark</item>
-        <item name="appbarSpinnerTextColorSelector">@color/appbar_spinner_color_selector_dark</item>
-        <item name="buttonTextColorSelector">@color/button_text_color_selector_dark</item>
-        <item name="buttonBackgroundColorSelector">@color/button_background_color_selector_dark</item>
-        <item name="aboutTitle">@color/blue_600</item>
-        <item name="aboutText">@color/blue_400</item>
-        <item name="aboutBackground">@color/gray_850</item>
-        <item name="listSelectorDrawable">@drawable/list_selector_dark</item>
-        <item name="domainSettingsIconTintColor">@color/blue_600</item>
-        <item name="deleteIcon">@drawable/delete_dark</item>
-        <item name="addIcon">@drawable/add_dark</item>
-        <item name="addBookmarkIcon">@drawable/create_bookmark_dark</item>
-        <item name="addFolderIcon">@drawable/create_folder_dark</item>
-        <item name="clearIcon">@drawable/clear_dark</item>
-        <item name="copyIcon">@drawable/copy_dark</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="saveIcon">@drawable/save_dark</item>
-        <item name="sortIcon">@drawable/sort_dark</item>
-        <item name="android:spinnerDropDownItemStyle">@style/PrivacyBrowserSpinnerDropDownItemStyleDark</item>
-        <item name="appBarTextTheme">@style/PrivacyBrowserAppBarDark</item>
-        <item name="popupsTheme">@style/PrivacyBrowserPopupsDark</item>
-        <item name="tabLayoutTheme">@style/PrivacyBrowserTabLayoutDark</item>
-    </style>
-
-    <style name="PrivacyBrowserSettingsDark" parent="Theme.AppCompat" >
-        <item name="colorPrimary">@color/blue_800</item>
-        <item name="colorPrimaryDark">@color/blue_900</item>
-        <item name="android:textColorPrimary">@color/primary_text_color_selector_dark</item>
-        <item name="colorAccent">@color/blue_600</item>
-        <item name="userAgentIcon">@drawable/user_agent_dark</item>
-        <item name="searchIcon">@drawable/search_enabled_dark</item>
-        <item name="homepageIcon">@drawable/home_enabled_dark</item>
-        <item name="fontSizeIcon">@drawable/font_size_dark</item>
-    </style>
-
-    <!-- `ThemeOverlay.AppCompat.Dark.ActionBar` makes the text and the icons in the AppBar white. -->
-    <style name="PrivacyBrowserAppBarDark" parent="ThemeOverlay.AppCompat.Dark.ActionBar" >
-        <item name="android:textColorPrimary">@color/gray_300</item>
-    </style>
-
-    <!-- Configure the About and Guide `TabLayouts`. -->
-    <style name="PrivacyBrowserTabLayoutDark" parent="Widget.Design.TabLayout" >
-        <item name="tabBackground">@color/blue_800</item>
-        <item name="android:textColorSecondary">@color/blue_300</item>
-        <item name="tabIndicatorColor">@color/gray_300</item>
-    </style>
-
-    <style name="PrivacyBrowserAlertDialogDark" parent="Theme.AppCompat.Dialog.Alert" >
-        <item name="android:windowBackground">@color/gray_850</item>
-        <item name="android:textColorPrimary">@color/gray_300</item>
-        <item name="android:textColorSecondary">@color/gray_300</item>
-        <item name="colorAccent">@color/blue_600</item>
-    </style>
-
-    <style name="PrivacyBrowserSpinnerDropDownItemStyleDark" parent="Base.Widget.AppCompat.TextView.SpinnerItem" >
-        <item name="android:textColor">@color/gray_300</item>
-    </style>
-
-    <!-- `ThemeOverlay.AppCompat.Dark` makes the popups have a dark background with light text. -->
-    <style name="PrivacyBrowserPopupsDark" parent="ThemeOverlay.AppCompat.Dark" >
-        <item name="android:textColorPrimary">@color/primary_text_color_selector_dark</item>
-    </style>
-</resources>
\ No newline at end of file
index 694ed6b6d1fbee185ecac225088e5058a4c47b87..6bbaedf504ac8274b8d74867fab20da16c2d5179 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 
 <!--
-  Copyright © 2015-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2015-2020 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
 
@@ -18,7 +18,8 @@
   You should have received a copy of the GNU General Public License
   along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
 
-<resources>
+<resources
+    xmlns:tools="http://schemas.android.com/tools">
     <!-- Light theme styles. -->
 
     <!-- `android:windowTranslucentStatus` makes the system status bar translucent.  When it is specified the root layout should include `android:fitsSystemWindows="true"`. -->
         <item name="appBarTheme">@style/PrivacyBrowserAppBarLight</item>
         <item name="colorAccent">@color/blue_700</item>
         <item name="dialogTabLayoutTheme">@style/PrivacyBrowserTabLayoutDialogLight</item>
+        <item name="findOnPageIconTintColor">@color/blue_800</item>
         <item name="mainStatusBarBackground">@color/gray_500</item>
         <item name="navigationHeaderBackground">@color/blue_700</item>
         <item name="navigationHeaderTextColor">@color/white</item>
         <item name="navigationIconTintColor">@color/blue_800</item>
-        <item name="findOnPageIconTintColor">@color/blue_800</item>
         <item name="progressTintColor">@color/blue_700</item>
         <item name="redText">@color/red_a700</item>
         <item name="sslHeader">@color/blue_700</item>
     <!-- `windowActionModeOverlay` makes the contextual app bar cover the support app bar. -->
     <style name="PrivacyBrowserLight.SecondaryActivity" >
         <item name="windowActionModeOverlay">true</item>
+        <item name="android:windowTranslucentStatus">false</item>
         <item name="colorPrimaryDark">@color/blue_700</item>
+        <item name="android:statusBarColor" tools:targetApi="21">@color/blue_900</item>
         <item name="android:textColorHighlight">@color/blue_200</item>
         <item name="android:actionModeBackground">@color/blue_700</item>
         <item name="spinnerHeaderTextColor">@color/white</item>
         <item name="spinnerBackground">@color/blue_750</item>
         <item name="spinnerTextColorSelector">@color/spinner_color_selector_light</item>
         <item name="appbarSpinnerTextColorSelector">@color/appbar_spinner_color_selector_light</item>
-        <item name="buttonTextColorSelector">@color/button_text_color_selector_light</item>
         <item name="buttonBackgroundColorSelector">@color/button_background_color_selector_light</item>
+        <item name="buttonTextColorSelector">@color/button_text_color_selector_light</item>
         <item name="listSelectorDrawable">@drawable/list_selector_light</item>
         <item name="aboutTitle">@color/blue_900</item>
         <item name="aboutText">@color/blue_700</item>
         <item name="android:windowTranslucentStatus">true</item>
         <item name="appBarTheme">@style/PrivacyBrowserAppBarDark</item>
         <item name="colorAccent">@color/blue_600</item>
+        <item name="findOnPageIconTintColor">@color/blue_600</item>
         <item name="mainStatusBarBackground">@color/black</item>
         <item name="navigationHeaderBackground">@color/blue_800</item>
         <item name="navigationHeaderTextColor">@color/gray_300</item>
-        <item name="findOnPageIconTintColor">@color/blue_600</item>
         <item name="navigationIconTintColor">@color/blue_600</item>
         <item name="progressTintColor">@color/blue_600</item>
         <item name="redText">@color/red_900</item>
     <!-- `windowActionModeOverlay` makes the contextual app bar cover the support app bar.  `colorPrimaryDark` goes behind the status bar, which is then darkened by the overlay.-->
     <style name="PrivacyBrowserDark.SecondaryActivity" >
         <item name="windowActionModeOverlay">true</item>
-        <item name="colorPrimaryDark">@color/blue_900</item>
+        <item name="android:windowTranslucentStatus">false</item>
+        <item name="colorPrimaryDark">@color/blue_800</item>
+        <item name="android:statusBarColor" tools:targetApi="21">@color/blue_900</item>
         <item name="android:actionModeBackground">@color/blue_800</item>
         <item name="spinnerHeaderTextColor">@color/gray_300</item>
         <item name="spinnerBackground">@color/blue_830</item>
         <item name="addIcon">@drawable/add_dark</item>
         <item name="addBookmarkIcon">@drawable/create_bookmark_dark</item>
         <item name="addFolderIcon">@drawable/create_folder_dark</item>
-        <item name="copyIcon">@drawable/copy_dark</item>
         <item name="clearIcon">@drawable/clear_dark</item>
+        <item name="copyIcon">@drawable/copy_dark</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>
 
     <!-- Configure the About and Guide `TabLayouts`. -->
     <style name="PrivacyBrowserTabLayoutDark" parent="Widget.Design.TabLayout" >
-        <item name="tabBackground">@color/blue_900</item>
+        <item name="tabBackground">@color/blue_800</item>
         <item name="android:textColorSecondary">@color/blue_300</item>
         <item name="tabIndicatorColor">@color/gray_300</item>
     </style>
index 3286a50cab68f3c2a701dd65fcc8840f4ea5365f..46d1616dad483d7eaa8ebac509fc598fdb1b74ee 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+ * Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
  *
  * This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
  *
 // Top-level build file where you can add configuration options common to all sub-projects/modules.
 
 buildscript {
+    ext.kotlin_version = '1.3.61'
     repositories {
         jcenter()
         google()
     }
     dependencies {
         classpath 'com.android.tools.build:gradle:3.5.3'
+        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.61"
 
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files