Add swipe to refresh to domain and on-the-fly settings. https://redmine.stoutner...
authorSoren Stoutner <soren@stoutner.com>
Tue, 29 May 2018 18:39:39 +0000 (11:39 -0700)
committerSoren Stoutner <soren@stoutner.com>
Tue, 29 May 2018 18:39:39 +0000 (11:39 -0700)
36 files changed:
.idea/dictionaries/soren.xml
app/src/free/assets/de/about_permissions_dark.html
app/src/free/assets/de/about_permissions_light.html
app/src/free/assets/en/about_permissions_dark.html
app/src/free/assets/en/about_permissions_light.html
app/src/free/assets/es/about_permissions_dark.html
app/src/free/assets/es/about_permissions_light.html
app/src/free/assets/it/about_permissions_dark.html
app/src/free/assets/it/about_permissions_light.html
app/src/free/assets/ru/about_permissions_dark.html
app/src/free/assets/ru/about_permissions_light.html
app/src/main/assets/de/about_changelog_dark.html
app/src/main/assets/de/about_changelog_light.html
app/src/main/assets/en/about_changelog_dark.html
app/src/main/assets/en/about_changelog_light.html
app/src/main/assets/es/about_changelog_dark.html
app/src/main/assets/es/about_changelog_light.html
app/src/main/assets/it/about_changelog_dark.html
app/src/main/assets/it/about_changelog_light.html
app/src/main/assets/ru/about_changelog_dark.html
app/src/main/assets/ru/about_changelog_light.html
app/src/main/java/com/stoutner/privacybrowser/activities/DomainsActivity.java
app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java
app/src/main/java/com/stoutner/privacybrowser/fragments/DomainSettingsFragment.java
app/src/main/java/com/stoutner/privacybrowser/fragments/SettingsFragment.java
app/src/main/java/com/stoutner/privacybrowser/helpers/DomainsDatabaseHelper.java
app/src/main/res/layout/domain_settings_fragment.xml
app/src/main/res/layout/domain_settings_spinner_dropdown_item.xml [deleted file]
app/src/main/res/layout/domain_settings_spinner_dropdown_items.xml [new file with mode: 0644]
app/src/main/res/menu/webview_options_menu.xml
app/src/main/res/values-de/strings.xml
app/src/main/res/values-es/strings.xml
app/src/main/res/values-it/strings.xml
app/src/main/res/values-ru/strings.xml
app/src/main/res/values/strings.xml
app/src/main/res/xml/preferences.xml

index 57f6549..50e8c8b 100644 (file)
@@ -67,6 +67,7 @@
       <w>gerlach</w>
       <w>gitweb</w>
       <w>googleplay</w>
+      <w>homescreen</w>
       <w>huawei</w>
       <w>imageview</w>
       <w>intl</w>
       <w>subdomain</w>
       <w>subdomains</w>
       <w>subfolders</w>
+      <w>swipetorefresh</w>
       <w>tablayout</w>
       <w>techrepublic</w>
       <w>textarea</w>
index e5664bc..61a437c 100644 (file)
         <p>In addition, Privacy Browser Free displays ads from Google’s AdMob network using the Firebase backend.
             For the free flavor, Firebase adds the following permissions even though they are not listed in the manifest file.</p>
 
+        <h3>Read phone status and identity</h3>
+        <p><a href="https://developer.android.com/reference/android/Manifest.permission#read_phone_state">android.permission.READ_PHONE_STATE</a></p>
+        <p>Allows the ads to access to phone state, including the phone number of the device, current cellular network information, the status of any ongoing calls,
+            and a list of any PhoneAccounts registered on the device. This is a dangerous permission and requires the user to explicitly allow it on Android Marshmallow (API 23) or newer.
+            In my testing I have not seen ads attempt to request or use this permission.</p>
+
         <h3>View network connections</h3>
         <p><a href="https://developer.android.com/reference/android/Manifest.permission.html#ACCESS_NETWORK_STATE">android.permission.ACCESS_NETWORK_STATE</a></p>
         <p>Allows the ads to tell when you are connected to the internet and when you aren’t (presumably so they don’t try to reload an ad when you are disconnected).
index 51801b7..22ea512 100644 (file)
         <p>In addition, Privacy Browser Free displays ads from Google’s AdMob network using the Firebase backend.
             For the free flavor, Firebase adds the following permissions even though they are not listed in the manifest file.</p>
 
+        <h3>Read phone status and identity</h3>
+        <p><a href="https://developer.android.com/reference/android/Manifest.permission#read_phone_state">android.permission.READ_PHONE_STATE</a></p>
+        <p>Allows the ads to access to phone state, including the phone number of the device, current cellular network information, the status of any ongoing calls,
+            and a list of any PhoneAccounts registered on the device. This is a dangerous permission and requires the user to explicitly allow it on Android Marshmallow (API 23) or newer.
+            In my testing I have not seen ads attempt to request or use this permission.</p>
+
         <h3>View network connections</h3>
         <p><a href="https://developer.android.com/reference/android/Manifest.permission.html#ACCESS_NETWORK_STATE">android.permission.ACCESS_NETWORK_STATE</a></p>
         <p>Allows the ads to tell when you are connected to the internet and when you aren’t (presumably so they don’t try to reload an ad when you are disconnected).
index 7e6c4c0..3dd5af5 100644 (file)
         <p>In addition, Privacy Browser Free displays ads from Google’s AdMob network using the Firebase backend.
             For the free flavor, Firebase adds the following permissions even though they are not listed in the manifest file.</p>
 
+        <h3>Read phone status and identity</h3>
+        <p><a href="https://developer.android.com/reference/android/Manifest.permission#read_phone_state">android.permission.READ_PHONE_STATE</a></p>
+        <p>Allows the ads to access to phone state, including the phone number of the device, current cellular network information, the status of any ongoing calls,
+            and a list of any PhoneAccounts registered on the device. This is a dangerous permission and requires the user to explicitly allow it on Android Marshmallow (API 23) or newer.
+            In my testing I have not seen ads attempt to request or use this permission.</p>
+
         <h3>View network connections</h3>
         <p><a href="https://developer.android.com/reference/android/Manifest.permission.html#ACCESS_NETWORK_STATE">android.permission.ACCESS_NETWORK_STATE</a></p>
         <p>Allows the ads to tell when you are connected to the internet and when you aren’t (presumably so they don’t try to reload an ad when you are disconnected).
index f080c06..6cafaba 100644 (file)
         <p>In addition, Privacy Browser Free displays ads from Google’s AdMob network using the Firebase backend.
             For the free flavor, Firebase adds the following permissions even though they are not listed in the manifest file.</p>
 
+        <h3>Read phone status and identity</h3>
+        <p><a href="https://developer.android.com/reference/android/Manifest.permission#read_phone_state">android.permission.READ_PHONE_STATE</a></p>
+        <p>Allows the ads to access to phone state, including the phone number of the device, current cellular network information, the status of any ongoing calls,
+            and a list of any PhoneAccounts registered on the device. This is a dangerous permission and requires the user to explicitly allow it on Android Marshmallow (API 23) or newer.
+            In my testing I have not seen ads attempt to request or use this permission.</p>
+
         <h3>View network connections</h3>
         <p><a href="https://developer.android.com/reference/android/Manifest.permission.html#ACCESS_NETWORK_STATE">android.permission.ACCESS_NETWORK_STATE</a></p>
         <p>Allows the ads to tell when you are connected to the internet and when you aren’t (presumably so they don’t try to reload an ad when you are disconnected).
index 0617985..9041dd8 100644 (file)
         <p>Además, Navegador Privado Gratuito muestra anuncios de Google AdMob usando el proveedor Firebase.
             En el sabor gratuito, Firebase añade los siguientes permisos aunque no aparecen en el archivo de manifiesto.</p>
 
+        <h3>Leer el estado y la identidad del teléfono</h3>
+        <p><a href="https://developer.android.com/reference/android/Manifest.permission#read_phone_state">android.permission.READ_PHONE_STATE</a></p>
+        <p>Permite que los anuncios accedan al estado del teléfono, incluyendo el número de teléfono del dispositivo, la información actual de la red celular,
+            el estado de las llamadas en curso y una lista de las cuentas telefónicas registradas en el dispositivo.
+            Este es un permiso peligroso y requiere que el usuario lo permita explícitamente en Android Marshmallow (API 23) o posterior.
+            En mis pruebas no he visto anuncios que intenten solicitar o usar este permiso.</p>
+
         <h3>Ver conexiones de red</h3>
         <p><a href="https://developer.android.com/reference/android/Manifest.permission.html#ACCESS_NETWORK_STATE">android.permission.ACCESS_NETWORK_STATE</a></p>
         <p>Permite a los anuncios saber si el dispositivo está conectado a internet y cuando no (probablemente para no tratar de recargar un anuncio cuando está desconectado).
index 4501119..f9553b6 100644 (file)
         <p>Además, Navegador Privado Gratuito muestra anuncios de Google AdMob usando el proveedor Firebase.
             En el sabor gratuito, Firebase añade los siguientes permisos aunque no aparecen en el archivo de manifiesto.</p>
 
+        <h3>Leer el estado y la identidad del teléfono</h3>
+        <p><a href="https://developer.android.com/reference/android/Manifest.permission#read_phone_state">android.permission.READ_PHONE_STATE</a></p>
+        <p>Permite que los anuncios accedan al estado del teléfono, incluyendo el número de teléfono del dispositivo, la información actual de la red celular,
+            el estado de las llamadas en curso y una lista de las cuentas telefónicas registradas en el dispositivo.
+            Este es un permiso peligroso y requiere que el usuario lo permita explícitamente en Android Marshmallow (API 23) o posterior.
+            En mis pruebas no he visto anuncios que intenten solicitar o usar este permiso.</p>
+
         <h3>Ver conexiones de red</h3>
         <p><a href="https://developer.android.com/reference/android/Manifest.permission.html#ACCESS_NETWORK_STATE">android.permission.ACCESS_NETWORK_STATE</a></p>
         <p>Permite a los anuncios saber si el dispositivo está conectado a internet y cuando no (probablemente para no tratar de recargar un anuncio cuando está desconectado).
index 5054f87..2604326 100644 (file)
         <p>Oltre ai permessi sopraelencati, Privacy Browser Free mostra gli annunci provenienti dalla Google's AdMob network utilizzando il Firebase backend.
             Se si utilizza la versione Free, Firebase aggiunge i seguenti permessi anche se non sono elencati nel file “manifest”.</p>
 
+        <h3>Lettura dello stato del telefono e dell'identità</h3>
+        <p><a href="https://developer.android.com/reference/android/Manifest.permission#read_phone_state">android.permission.READ_PHONE_STATE</a></p>
+        <p>Permette agli annunci di accedere allo stato del telefono, compreso il numero di telefono del dispositivo, l'informazione sulla rete telefonica in uso,
+            lo status delle chiamate in uscita e una lista degli account telefonici registrati sul dispositivo.
+            Si tratta di un permesso pericoloso per cui è richiesto che l'utente ne dia esplicito consenso su Android Marshmallow (API 23) o successivo.
+            Test effettuati non hanno peraltro evidenziato alcun tentativo da parte di annunci di richiedere o utilizzare questo permesso.</p>
+
         <h3>Visualizzare connessioni di rete</h3>
         <p><a href="https://developer.android.com/reference/android/Manifest.permission.html#ACCESS_NETWORK_STATE">android.permission.ACCESS_NETWORK_STATE</a></p>
         <p>Permette agli annunci di dire quando si è o non si è connessi a internet (presumibilmente per evitare il tentativo di ricaricare un annuncio quando non si è connessi).
index 6f5fd19..62ee6ab 100644 (file)
         <p>Oltre ai permessi sopraelencati, Privacy Browser Free mostra gli annunci provenienti dalla Google's AdMob network utilizzando il Firebase backend.
             Se si utilizza la versione Free, Firebase aggiunge i seguenti permessi anche se non sono elencati nel file “manifest”.</p>
 
+        <h3>Lettura dello stato del telefono e dell'identità</h3>
+        <p><a href="https://developer.android.com/reference/android/Manifest.permission#read_phone_state">android.permission.READ_PHONE_STATE</a></p>
+        <p>Permette agli annunci di accedere allo stato del telefono, compreso il numero di telefono del dispositivo, l'informazione sulla rete telefonica in uso,
+            lo status delle chiamate in uscita e una lista degli account telefonici registrati sul dispositivo.
+            Si tratta di un permesso pericoloso per cui è richiesto che l'utente ne dia esplicito consenso su Android Marshmallow (API 23) o successivo.
+            Test effettuati non hanno peraltro evidenziato alcun tentativo da parte di annunci di richiedere o utilizzare questo permesso.</p>
+
         <h3>Visualizzare connessioni di rete</h3>
         <p><a href="https://developer.android.com/reference/android/Manifest.permission.html#ACCESS_NETWORK_STATE">android.permission.ACCESS_NETWORK_STATE</a></p>
         <p>Permette agli annunci di dire quando si è o non si è connessi a internet (presumibilmente per evitare il tentativo di ricaricare un annuncio quando non si è connessi).
index 2d4c025..372303f 100644 (file)
         <p>Кроме того, Privacy Browser Free отображает объявления из сети Google AdMob с использованием бэкенда Firebase.
             Для бесплатной версии Firebase добавляет следующие разрешения, даже если они не перечислены в файле манифеста.</p>
 
+        <h3>Чтение статуса телефона и идентификации</h3>
+        <p><a href="https://developer.android.com/reference/android/Manifest.permission#read_phone_state">android.permission.READ_PHONE_STATE</a></p>
+        <p>Позволяет рекламе получать доступ к состоянию телефона, включая номер телефона устройства, текущую информацию о сотовой сети, статус любых текущих вызовов и список любых аккаунтов,
+            зарегистрированных на устройстве. Это опасное разрешение и оно требует явного разрешения от пользователя на Android Marshmallow (API 23) или новее.
+            В моих тестах я не сталкивался с тем, чтобы реклама пыталась запросить или использовать это разрешение.</p>
+
         <h3>Просмотр сетевых подключений</h3>
         <p><a href="https://developer.android.com/reference/android/Manifest.permission.html#ACCESS_NETWORK_STATE">android.permission.ACCESS_NETWORK_STATE</a></p>
         <p>Позволяет рекламе узнавать наличие подключения к интернету (возможно, таким образом предотвращаются попытки загрузки рекламы при отсутствии активного соединения).
index 389d2c0..90eaaf0 100644 (file)
         <p>Кроме того, Privacy Browser Free отображает объявления из сети Google AdMob с использованием бэкенда Firebase.
             Для бесплатной версии Firebase добавляет следующие разрешения, даже если они не перечислены в файле манифеста.</p>
 
+        <h3>Чтение статуса телефона и идентификации</h3>
+        <p><a href="https://developer.android.com/reference/android/Manifest.permission#read_phone_state">android.permission.READ_PHONE_STATE</a></p>
+        <p>Позволяет рекламе получать доступ к состоянию телефона, включая номер телефона устройства, текущую информацию о сотовой сети, статус любых текущих вызовов и список любых аккаунтов,
+            зарегистрированных на устройстве. Это опасное разрешение и оно требует явного разрешения от пользователя на Android Marshmallow (API 23) или новее.
+            В моих тестах я не сталкивался с тем, чтобы реклама пыталась запросить или использовать это разрешение.</p>
+
         <h3>Просмотр сетевых подключений</h3>
         <p><a href="https://developer.android.com/reference/android/Manifest.permission.html#ACCESS_NETWORK_STATE">android.permission.ACCESS_NETWORK_STATE</a></p>
         <p>Позволяет рекламе узнавать наличие подключения к интернету (возможно, таким образом предотвращаются попытки загрузки рекламы при отсутствии активного соединения).
index 48d856d..91fdef8 100644 (file)
@@ -29,7 +29,7 @@
 
     <body>
         <h3>2.10 (version code 33)</h3>
-        <p>24. Mai 2018 - Mindest-API 19, Ziel-API 27</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=29e6b7b467e6987d6aa42429b03e3b5498acbae3">24. Mai 2018</a> - Mindest-API 19, Ziel-API 27</p>
         <ul>
             <li>Enable <a href="https://redmine.stoutner.com/issues/1">uploading of files</a> to websites on Lollipop and newer.</li>
             <li>Allow <a href="https://redmine.stoutner.com/issues/216">applied user agents to be auto-updated</a> with new releases.</li>
index b5e8a07..709ef8b 100644 (file)
@@ -29,7 +29,7 @@
 
     <body>
         <h3>2.10 (version code 33)</h3>
-        <p>24. Mai 2018 - Mindest-API 19, Ziel-API 27</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=29e6b7b467e6987d6aa42429b03e3b5498acbae3">24. Mai 2018</a> - Mindest-API 19, Ziel-API 27</p>
         <ul>
             <li>Enable <a href="https://redmine.stoutner.com/issues/1">uploading of files</a> to websites on Lollipop and newer.</li>
             <li>Allow <a href="https://redmine.stoutner.com/issues/216">applied user agents to be auto-updated</a> with new releases.</li>
index c275aa4..0f45bd8 100644 (file)
@@ -25,7 +25,7 @@
 
     <body>
         <h3>2.10 (version code 33)</h3>
-        <p>24 May 2018 - minimum API 19, target API 27</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=29e6b7b467e6987d6aa42429b03e3b5498acbae3">24 May 2018</a> - minimum API 19, target API 27</p>
         <ul>
             <li>Enable <a href="https://redmine.stoutner.com/issues/1">uploading of files</a> to websites on Lollipop and newer.</li>
             <li>Allow <a href="https://redmine.stoutner.com/issues/216">applied user agents to be auto-updated</a> with new releases.</li>
index 0bd4574..92c0c9e 100644 (file)
@@ -25,7 +25,7 @@
 
     <body>
         <h3>2.10 (version code 33)</h3>
-        <p>24 May 2018 - minimum API 19, target API 27</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=29e6b7b467e6987d6aa42429b03e3b5498acbae3">24 May 2018</a> - minimum API 19, target API 27</p>
         <ul>
             <li>Enable <a href="https://redmine.stoutner.com/issues/1">uploading of files</a> to websites on Lollipop and newer.</li>
             <li>Allow <a href="https://redmine.stoutner.com/issues/216">applied user agents to be auto-updated</a> with new releases.</li>
index 5ada0c2..8c3d357 100644 (file)
@@ -27,7 +27,7 @@
 
     <body>
         <h3>2.10 (código de versión)</h3>
-        <p>24 de mayo de 2018 - API mínimo 19, API dirigido 27</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=29e6b7b467e6987d6aa42429b03e3b5498acbae3">24 de mayo de 2018</a> - API mínimo 19, API dirigido 27</p>
         <ul>
             <li>Habilitar <a href="https://redmine.stoutner.com/issues/1">la subida de archivos</a> a páginas web en Lollipop y más recientes.</li>
             <li>Permitir <a href="https://redmine.stoutner.com/issues/216">que los agentes de usuario aplicados puedan actualizarse automáticamente</a> con nuevas versiones.</li>
index 93fd291..a4d18bb 100644 (file)
@@ -27,7 +27,7 @@
 
     <body>
         <h3>2.10 (código de versión)</h3>
-        <p>24 de mayo de 2018 - API mínimo 19, API dirigido 27</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=29e6b7b467e6987d6aa42429b03e3b5498acbae3">24 de mayo de 2018</a> - API mínimo 19, API dirigido 27</p>
         <ul>
             <li>Habilitar <a href="https://redmine.stoutner.com/issues/1">la subida de archivos</a> a páginas web en Lollipop y más recientes.</li>
             <li>Permitir <a href="https://redmine.stoutner.com/issues/216">que los agentes de usuario aplicados puedan actualizarse automáticamente</a> con nuevas versiones.</li>
index f09b264..d8decb5 100644 (file)
@@ -27,7 +27,7 @@
 
     <body>
         <h3>2.10 (versione codice 33)</h3>
-        <p>24 Maggio 2018 - minima API 19, target API 27</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=29e6b7b467e6987d6aa42429b03e3b5498acbae3">24 Maggio 2018</a> - minima API 19, target API 27</p>
         <ul>
             <li>Abilitazione dell'<a href="https://redmine.stoutner.com/issues/1">upload di file</a> sui siti web per Android Lollipop e seguenti.</li>
             <li>Possibilità per <a href="https://redmine.stoutner.com/issues/216">gli user agent applicati di essere auto-aggiornati</a> con le nuove release.</li>
index 9cdec7d..b23aa9a 100644 (file)
@@ -27,7 +27,7 @@
 
     <body>
         <h3>2.10 (versione codice 33)</h3>
-        <p>24 Maggio 2018 - minima API 19, target API 27</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=29e6b7b467e6987d6aa42429b03e3b5498acbae3">24 Maggio 2018</a> - minima API 19, target API 27</p>
         <ul>
             <li>Abilitazione dell'<a href="https://redmine.stoutner.com/issues/1">upload di file</a> sui siti web per Android Lollipop e seguenti.</li>
             <li>Possibilità per <a href="https://redmine.stoutner.com/issues/216">gli user agent applicati di essere auto-aggiornati</a> con le nuove release.</li>
index 505a3aa..e1f07cf 100644 (file)
@@ -25,7 +25,7 @@
 
     <body>
         <h3>2.10 (код версии 33)</h3>
-        <p>24 мая 2018 года - minimum API 19, target API 27</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=29e6b7b467e6987d6aa42429b03e3b5498acbae3">24 мая 2018 года</a> - minimum API 19, target API 27</p>
         <ul>
             <li>Добавлена <a href="https://redmine.stoutner.com/issues/1">возможность загрузки файлов</a> на веб-сайты для версии Android Lollipop и новее.</li>
             <li>Добавлено <a href="https://redmine.stoutner.com/issues/216">автоматическое обновление пользовательских агентов</a> вместе с новыми версиями браузера.</li>
index 4cd3075..56b3f76 100644 (file)
@@ -25,7 +25,7 @@
 
     <body>
         <h3>2.10 (код версии 33)</h3>
-        <p>24 мая 2018 года - minimum API 19, target API 27</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=29e6b7b467e6987d6aa42429b03e3b5498acbae3">24 мая 2018 года</a> - minimum API 19, target API 27</p>
         <ul>
             <li>Добавлена <a href="https://redmine.stoutner.com/issues/1">возможность загрузки файлов</a> на веб-сайты для версии Android Lollipop и новее.</li>
             <li>Добавлено <a href="https://redmine.stoutner.com/issues/216">автоматическое обновление пользовательских агентов</a> вместе с новыми версиями браузера.</li>
index 05df4ab..430bf90 100644 (file)
@@ -641,6 +641,7 @@ public class DomainsActivity extends AppCompatActivity implements AddDomainDialo
         Spinner userAgentSpinner = view.findViewById(R.id.domain_settings_user_agent_spinner);
         EditText customUserAgentEditText = view.findViewById(R.id.domain_settings_custom_user_agent_edittext);
         Spinner fontSizeSpinner = view.findViewById(R.id.domain_settings_font_size_spinner);
+        Spinner swipeToRefreshSpinner = view.findViewById(R.id.domain_settings_swipe_to_refresh_spinner);
         Spinner displayWebpageImagesSpinner = view.findViewById(R.id.domain_settings_display_webpage_images_spinner);
         Spinner nightModeSpinner = view.findViewById(R.id.domain_settings_night_mode_spinner);
         Switch pinnedSslCertificateSwitch = view.findViewById(R.id.domain_settings_pinned_ssl_certificate_switch);
@@ -660,6 +661,7 @@ public class DomainsActivity extends AppCompatActivity implements AddDomainDialo
         boolean fanboysSocialBlockingEnabled = fanboysSocialBlockingSwitch.isChecked();
         int userAgentPosition = userAgentSpinner.getSelectedItemPosition();
         int fontSizePosition = fontSizeSpinner.getSelectedItemPosition();
+        int swipeToRefreshInt = swipeToRefreshSpinner.getSelectedItemPosition();
         int displayWebpageImagesInt = displayWebpageImagesSpinner.getSelectedItemPosition();
         int nightModeInt = nightModeSpinner.getSelectedItemPosition();
         boolean pinnedSslCertificate = pinnedSslCertificateSwitch.isChecked();
@@ -694,8 +696,8 @@ public class DomainsActivity extends AppCompatActivity implements AddDomainDialo
         if (savedSslCertificateRadioButton.isChecked()) {  // The current certificate is being used.
             // Update the database except for the certificate.
             domainsDatabaseHelper.updateDomainExceptCertificate(DomainsActivity.currentDomainDatabaseId, domainNameString, javaScriptEnabled, firstPartyCookiesEnabled, thirdPartyCookiesEnabled,
-                    domStorageEnabled, formDataEnabled, easyListEnabled, easyPrivacyEnabled, fanboysAnnoyanceEnabled, fanboysSocialBlockingEnabled, userAgentName, fontSizeInt, displayWebpageImagesInt,
-                    nightModeInt, pinnedSslCertificate);
+                    domStorageEnabled, formDataEnabled, easyListEnabled, easyPrivacyEnabled, fanboysAnnoyanceEnabled, fanboysSocialBlockingEnabled, userAgentName, fontSizeInt, swipeToRefreshInt, nightModeInt,
+                    displayWebpageImagesInt, pinnedSslCertificate);
         } else if (currentWebsiteCertificateRadioButton.isChecked()) {  // The certificate is being updated with the current website certificate.
             // Get the current website SSL certificate.
             SslCertificate currentWebsiteSslCertificate = MainWebViewActivity.sslCertificate;
@@ -712,14 +714,15 @@ public class DomainsActivity extends AppCompatActivity implements AddDomainDialo
 
             // Update the database.
             domainsDatabaseHelper.updateDomainWithCertificate(currentDomainDatabaseId, domainNameString, javaScriptEnabled, firstPartyCookiesEnabled, thirdPartyCookiesEnabled, domStorageEnabled,
-                    formDataEnabled, easyListEnabled, easyPrivacyEnabled, fanboysAnnoyanceEnabled, fanboysSocialBlockingEnabled, userAgentName, fontSizeInt, displayWebpageImagesInt, nightModeInt,
-                    pinnedSslCertificate, issuedToCommonName, issuedToOrganization, issuedToOrganizationalUnit, issuedByCommonName, issuedByOrganization, issuedByOrganizationalUnit, startDateLong, endDateLong);
+                    formDataEnabled, easyListEnabled, easyPrivacyEnabled, fanboysAnnoyanceEnabled, fanboysSocialBlockingEnabled, userAgentName, fontSizeInt, swipeToRefreshInt,  nightModeInt,
+                    displayWebpageImagesInt, pinnedSslCertificate, issuedToCommonName, issuedToOrganization, issuedToOrganizationalUnit, issuedByCommonName, issuedByOrganization, issuedByOrganizationalUnit,
+                    startDateLong, endDateLong);
 
         } else {  // No certificate is selected.
             // Update the database, with PINNED_SSL_CERTIFICATE set to false.
             domainsDatabaseHelper.updateDomainExceptCertificate(currentDomainDatabaseId, domainNameString, javaScriptEnabled, firstPartyCookiesEnabled, thirdPartyCookiesEnabled, domStorageEnabled,
-                    formDataEnabled, easyListEnabled, easyPrivacyEnabled, fanboysAnnoyanceEnabled, fanboysSocialBlockingEnabled, userAgentName, fontSizeInt, displayWebpageImagesInt, nightModeInt,
-                    false);
+                    formDataEnabled, easyListEnabled, easyPrivacyEnabled, fanboysAnnoyanceEnabled, fanboysSocialBlockingEnabled, userAgentName, fontSizeInt,  swipeToRefreshInt, nightModeInt,
+                    displayWebpageImagesInt,false);
         }
     }
 
index 6e29667..02b7025 100644 (file)
@@ -245,7 +245,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
     // `fullScreenVideoFrameLayout` is used in `onCreate()` and `onConfigurationChanged()`.
     private FrameLayout fullScreenVideoFrameLayout;
 
-    // `swipeRefreshLayout` is used in `onCreate()`, `onPrepareOptionsMenu`, and `onRestart()`.
+    // `swipeRefreshLayout` is used in `onCreate()`, `onPrepareOptionsMenu()`, `onOptionsMenuSelected()`, and `onRestart()`.
     private SwipeRefreshLayout swipeRefreshLayout;
 
     // `urlAppBarRelativeLayout` is used in `onCreate()` and `applyDomainSettings()`.
@@ -278,9 +278,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
     // `nightMode` is used in `onCreate()` and  `applyDomainSettings()`.
     private boolean nightMode;
 
-    // `swipeToRefreshEnabled` is used in `onPrepareOptionsMenu()` and `applyAppSettings()`.
-    private boolean swipeToRefreshEnabled;
-
     // `displayWebpageImagesBoolean` is used in `applyAppSettings()` and `applyDomainSettings()`.
     private boolean displayWebpageImagesBoolean;
 
@@ -894,7 +891,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
                         mainWebView.setVisibility(View.VISIBLE);
                     }
 
-                    //Stop the `SwipeToRefresh` indicator if it is running
+                    //Stop the swipe to refresh indicator if it is running
                     swipeRefreshLayout.setRefreshing(false);
                 }
             }
@@ -1612,8 +1609,8 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
         MenuItem clearDOMStorageMenuItem = menu.findItem(R.id.clear_dom_storage);
         MenuItem clearFormDataMenuItem = menu.findItem(R.id.clear_form_data);
         MenuItem fontSizeMenuItem = menu.findItem(R.id.font_size);
+        MenuItem swipeToRefreshMenuItem = menu.findItem(R.id.swipe_to_refresh);
         MenuItem displayImagesMenuItem = menu.findItem(R.id.display_images);
-        MenuItem refreshMenuItem = menu.findItem(R.id.refresh);
         MenuItem adConsentMenuItem = menu.findItem(R.id.ad_consent);
 
         // Set the text for the domain menu item.
@@ -1628,6 +1625,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
         toggleThirdPartyCookiesMenuItem.setChecked(thirdPartyCookiesEnabled);
         toggleDomStorageMenuItem.setChecked(domStorageEnabled);
         toggleSaveFormDataMenuItem.setChecked(saveFormDataEnabled);
+        swipeToRefreshMenuItem.setChecked(swipeRefreshLayout.isEnabled());
         displayImagesMenuItem.setChecked(mainWebView.getSettings().getLoadsImagesAutomatically());
 
         // Enable third-party cookies if first-party cookies are enabled.
@@ -1720,9 +1718,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
         fontSizeMenuItem.setTitle(fontSizeTitle);
         selectedFontSizeMenuItem.setChecked(true);
 
-        // Only show Refresh if `swipeToRefresh` is disabled.
-        refreshMenuItem.setVisible(!swipeToRefreshEnabled);
-
         // Only show Ad Consent if this is the free flavor.
         adConsentMenuItem.setVisible(BuildConfig.FLAVOR.contentEquals("free"));
 
@@ -1744,6 +1739,29 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
 
         // Set the commands that relate to the menu entries.
         switch (menuItemId) {
+            case R.id.toggle_javascript:
+                // Switch the status of javaScriptEnabled.
+                javaScriptEnabled = !javaScriptEnabled;
+
+                // Apply the new JavaScript status.
+                mainWebView.getSettings().setJavaScriptEnabled(javaScriptEnabled);
+
+                // Update the privacy icon.  `true` runs `invalidateOptionsMenu` as the last step.
+                updatePrivacyIcons(true);
+
+                // Display a `Snackbar`.
+                if (javaScriptEnabled) {  // JavaScrip is enabled.
+                    Snackbar.make(findViewById(R.id.main_webview), R.string.javascript_enabled, Snackbar.LENGTH_SHORT).show();
+                } else if (firstPartyCookiesEnabled) {  // JavaScript is disabled, but first-party cookies are enabled.
+                    Snackbar.make(findViewById(R.id.main_webview), R.string.javascript_disabled, Snackbar.LENGTH_SHORT).show();
+                } else {  // Privacy mode.
+                    Snackbar.make(findViewById(R.id.main_webview), R.string.privacy_mode, Snackbar.LENGTH_SHORT).show();
+                }
+
+                // Reload the WebView.
+                mainWebView.reload();
+                return true;
+
             case R.id.add_or_edit_domain:
                 if (domainSettingsApplied) {  // Edit the current domain settings.
                     // Reapply the domain settings on returning to `MainWebViewActivity`.
@@ -1786,29 +1804,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
                 }
                 return true;
 
-            case R.id.toggle_javascript:
-                // Switch the status of javaScriptEnabled.
-                javaScriptEnabled = !javaScriptEnabled;
-
-                // Apply the new JavaScript status.
-                mainWebView.getSettings().setJavaScriptEnabled(javaScriptEnabled);
-
-                // Update the privacy icon.  `true` runs `invalidateOptionsMenu` as the last step.
-                updatePrivacyIcons(true);
-
-                // Display a `Snackbar`.
-                if (javaScriptEnabled) {  // JavaScrip is enabled.
-                    Snackbar.make(findViewById(R.id.main_webview), R.string.javascript_enabled, Snackbar.LENGTH_SHORT).show();
-                } else if (firstPartyCookiesEnabled) {  // JavaScript is disabled, but first-party cookies are enabled.
-                    Snackbar.make(findViewById(R.id.main_webview), R.string.javascript_disabled, Snackbar.LENGTH_SHORT).show();
-                } else {  // Privacy mode.
-                    Snackbar.make(findViewById(R.id.main_webview), R.string.privacy_mode, Snackbar.LENGTH_SHORT).show();
-                }
-
-                // Reload the WebView.
-                mainWebView.reload();
-                return true;
-
             case R.id.toggle_first_party_cookies:
                 // Switch the status of firstPartyCookiesEnabled.
                 firstPartyCookiesEnabled = !firstPartyCookiesEnabled;
@@ -2031,6 +2026,11 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
                 mainWebView.getSettings().setTextZoom(200);
                 return true;
 
+            case R.id.swipe_to_refresh:
+                // Toggle swipe to refresh.
+                swipeRefreshLayout.setEnabled(!swipeRefreshLayout.isEnabled());
+                return true;
+
             case R.id.display_images:
                 if (mainWebView.getSettings().getLoadsImagesAutomatically()) {  // Images are currently loaded automatically.
                     mainWebView.getSettings().setLoadsImagesAutomatically(false);
@@ -2043,6 +2043,12 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
                 onTheFlyDisplayImagesSet = true;
                 return true;
 
+            case R.id.view_source:
+                // Launch the View Source activity.
+                Intent viewSourceIntent = new Intent(this, ViewSourceActivity.class);
+                startActivity(viewSourceIntent);
+                return true;
+
             case R.id.share:
                 // Setup the share string.
                 String shareString = webViewTitle + " – " + urlTextBox.getText().toString();
@@ -2089,12 +2095,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
                 printManager.print(getString(R.string.privacy_browser_web_page), printDocumentAdapter, null);
                 return true;
 
-            case R.id.view_source:
-                // Launch the Vew Source activity.
-                Intent viewSourceIntent = new Intent(this, ViewSourceActivity.class);
-                startActivity(viewSourceIntent);
-                return true;
-
             case R.id.add_to_homescreen:
                 // Show the `CreateHomeScreenShortcutDialog` `AlertDialog` and name this instance `R.string.create_shortcut`.
                 AppCompatDialogFragment createHomeScreenShortcutDialogFragment = new CreateHomeScreenShortcutDialog();
@@ -3145,7 +3145,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
         fullScreenBrowsingModeEnabled = sharedPreferences.getBoolean("full_screen_browsing_mode", false);
         hideSystemBarsOnFullscreen = sharedPreferences.getBoolean("hide_system_bars", false);
         translucentNavigationBarOnFullscreen = sharedPreferences.getBoolean("translucent_navigation_bar", true);
-        swipeToRefreshEnabled = sharedPreferences.getBoolean("swipe_to_refresh", false);
         displayWebpageImagesBoolean = sharedPreferences.getBoolean("display_webpage_images", true);
 
         // Set the homepage, search, and proxy options.
@@ -3213,9 +3212,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
             waitingForOrbot = false;
         }
 
-        // Set swipe to refresh.
-        swipeRefreshLayout.setEnabled(swipeToRefreshEnabled);
-
         // Set Do Not Track status.
         if (doNotTrackEnabled) {
             customHeaders.put("DNT", "1");
@@ -3375,6 +3371,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
             String defaultFontSizeString = sharedPreferences.getString("default_font_size", "100");
             String defaultUserAgentName = sharedPreferences.getString("user_agent", "Privacy Browser");
             String defaultCustomUserAgentString = sharedPreferences.getString("custom_user_agent", "PrivacyBrowser/1.0");
+            boolean defaultSwipeToRefresh = sharedPreferences.getBoolean("swipe_to_refresh", true);
             nightMode = sharedPreferences.getBoolean("night_mode", false);
 
             if (domainSettingsApplied) {  // The url we are loading has custom domain settings.
@@ -3395,8 +3392,9 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
                 fanboysSocialBlockingListEnabled = (currentHostDomainSettingsCursor.getInt(currentHostDomainSettingsCursor.getColumnIndex(DomainsDatabaseHelper.ENABLE_FANBOYS_SOCIAL_BLOCKING_LIST)) == 1);
                 String userAgentName = currentHostDomainSettingsCursor.getString(currentHostDomainSettingsCursor.getColumnIndex(DomainsDatabaseHelper.USER_AGENT));
                 int fontSize = currentHostDomainSettingsCursor.getInt(currentHostDomainSettingsCursor.getColumnIndex(DomainsDatabaseHelper.FONT_SIZE));
-                displayWebpageImagesInt = currentHostDomainSettingsCursor.getInt(currentHostDomainSettingsCursor.getColumnIndex(DomainsDatabaseHelper.DISPLAY_IMAGES));
+                int swipeToRefreshInt = currentHostDomainSettingsCursor.getInt(currentHostDomainSettingsCursor.getColumnIndex(DomainsDatabaseHelper.SWIPE_TO_REFRESH));
                 int nightModeInt = currentHostDomainSettingsCursor.getInt(currentHostDomainSettingsCursor.getColumnIndex(DomainsDatabaseHelper.NIGHT_MODE));
+                displayWebpageImagesInt = currentHostDomainSettingsCursor.getInt(currentHostDomainSettingsCursor.getColumnIndex(DomainsDatabaseHelper.DISPLAY_IMAGES));
                 pinnedDomainSslCertificate = (currentHostDomainSettingsCursor.getInt(currentHostDomainSettingsCursor.getColumnIndex(DomainsDatabaseHelper.PINNED_SSL_CERTIFICATE)) == 1);
                 pinnedDomainSslIssuedToCNameString = currentHostDomainSettingsCursor.getString(currentHostDomainSettingsCursor.getColumnIndex(DomainsDatabaseHelper.SSL_ISSUED_TO_COMMON_NAME));
                 pinnedDomainSslIssuedToONameString = currentHostDomainSettingsCursor.getString(currentHostDomainSettingsCursor.getColumnIndex(DomainsDatabaseHelper.SSL_ISSUED_TO_ORGANIZATION));
@@ -3505,6 +3503,23 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
                         }
                     }
 
+                    // Set swipe to refresh.
+                    switch (swipeToRefreshInt) {
+                        case DomainsDatabaseHelper.SWIPE_TO_REFRESH_SYSTEM_DEFAULT:
+                            // Set swipe to refresh according to the default.
+                            swipeRefreshLayout.setEnabled(defaultSwipeToRefresh);
+                            break;
+
+                        case DomainsDatabaseHelper.SWIPE_TO_REFRESH_ENABLED:
+                            // Enable swipe to refresh.
+                            swipeRefreshLayout.setEnabled(true);
+                            break;
+
+                        case DomainsDatabaseHelper.SWIPE_TO_REFRESH_DISABLED:
+                            // Disable swipe to refresh.
+                            swipeRefreshLayout.setEnabled(false);
+                    }
+
                     // Store the applied user agent string, which is used in the View Source activity.
                     appliedUserAgentString = mainWebView.getSettings().getUserAgentString();
                 }
@@ -3538,6 +3553,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
                 mainWebView.getSettings().setDomStorageEnabled(domStorageEnabled);
                 mainWebView.getSettings().setSaveFormData(saveFormDataEnabled);
                 mainWebView.getSettings().setTextZoom(Integer.valueOf(defaultFontSizeString));
+                swipeRefreshLayout.setEnabled(defaultSwipeToRefresh);
 
                 // Reset the pinned SSL certificate information.
                 domainSettingsDatabaseId = -1;
index dd13859..ea57bc3 100644 (file)
@@ -95,8 +95,9 @@ public class DomainSettingsFragment extends Fragment {
         final String defaultUserAgentName = sharedPreferences.getString("user_agent", "Privacy Browser");
         final String defaultCustomUserAgentString = sharedPreferences.getString("custom_user_agent", "PrivacyBrowser/1.0");
         String defaultFontSizeString = sharedPreferences.getString("default_font_size", "100");
-        final boolean defaultDisplayWebpageImagesBoolean = sharedPreferences.getBoolean("display_website_images", true);
+        boolean defaultSwipeToRefreshBoolean = sharedPreferences.getBoolean("swipe_to_refresh", true);
         final boolean defaultNightModeBoolean = sharedPreferences.getBoolean("night_mode", false);
+        final boolean defaultDisplayWebpageImagesBoolean = sharedPreferences.getBoolean("display_website_images", true);
 
         // Get handles for the views in the fragment.
         final EditText domainNameEditText = domainSettingsView.findViewById(R.id.domain_settings_name_edittext);
@@ -124,12 +125,15 @@ public class DomainSettingsFragment extends Fragment {
         final EditText customUserAgentEditText = domainSettingsView.findViewById(R.id.domain_settings_custom_user_agent_edittext);
         final Spinner fontSizeSpinner = domainSettingsView.findViewById(R.id.domain_settings_font_size_spinner);
         final TextView fontSizeTextView = domainSettingsView.findViewById(R.id.domain_settings_font_size_textview);
-        final ImageView displayWebpageImagesImageView = domainSettingsView.findViewById(R.id.domain_settings_display_webpage_images_imageview);
-        final Spinner displayWebpageImagesSpinner = domainSettingsView.findViewById(R.id.domain_settings_display_webpage_images_spinner);
-        final TextView displayImagesTextView = domainSettingsView.findViewById(R.id.domain_settings_display_webpage_images_textview);
+        final ImageView swipeToRefreshImageView = domainSettingsView.findViewById(R.id.domain_settings_swipe_to_refresh_imageview);
+        final Spinner swipeToRefreshSpinner = domainSettingsView.findViewById(R.id.domain_settings_swipe_to_refresh_spinner);
+        final TextView swipeToRefreshTextView = domainSettingsView.findViewById(R.id.domain_settings_swipe_to_refresh_textview);
         final ImageView nightModeImageView = domainSettingsView.findViewById(R.id.domain_settings_night_mode_imageview);
         final Spinner nightModeSpinner = domainSettingsView.findViewById(R.id.domain_settings_night_mode_spinner);
         final TextView nightModeTextView = domainSettingsView.findViewById(R.id.domain_settings_night_mode_textview);
+        final ImageView displayWebpageImagesImageView = domainSettingsView.findViewById(R.id.domain_settings_display_webpage_images_imageview);
+        final Spinner displayWebpageImagesSpinner = domainSettingsView.findViewById(R.id.domain_settings_display_webpage_images_spinner);
+        final TextView displayImagesTextView = domainSettingsView.findViewById(R.id.domain_settings_display_webpage_images_textview);
         final ImageView pinnedSslCertificateImageView = domainSettingsView.findViewById(R.id.domain_settings_pinned_ssl_certificate_imageview);
         Switch pinnedSslCertificateSwitch = domainSettingsView.findViewById(R.id.domain_settings_pinned_ssl_certificate_switch);
         final LinearLayout savedSslCertificateLinearLayout = domainSettingsView.findViewById(R.id.saved_ssl_certificate_linearlayout);
@@ -184,8 +188,9 @@ public class DomainSettingsFragment extends Fragment {
         int fanboysSocialBlockingListInt = domainCursor.getInt(domainCursor.getColumnIndex(DomainsDatabaseHelper.ENABLE_FANBOYS_SOCIAL_BLOCKING_LIST));
         final String currentUserAgentName = domainCursor.getString(domainCursor.getColumnIndex(DomainsDatabaseHelper.USER_AGENT));
         int fontSizeInt = domainCursor.getInt(domainCursor.getColumnIndex(DomainsDatabaseHelper.FONT_SIZE));
-        int displayImagesInt = domainCursor.getInt(domainCursor.getColumnIndex(DomainsDatabaseHelper.DISPLAY_IMAGES));
+        int swipeToRefreshInt = domainCursor.getInt(domainCursor.getColumnIndex(DomainsDatabaseHelper.SWIPE_TO_REFRESH));
         int nightModeInt = domainCursor.getInt(domainCursor.getColumnIndex(DomainsDatabaseHelper.NIGHT_MODE));
+        int displayImagesInt = domainCursor.getInt(domainCursor.getColumnIndex(DomainsDatabaseHelper.DISPLAY_IMAGES));
         int pinnedSslCertificateInt = domainCursor.getInt(domainCursor.getColumnIndex(DomainsDatabaseHelper.PINNED_SSL_CERTIFICATE));
         final String savedSslCertificateIssuedToCNameString = domainCursor.getString(domainCursor.getColumnIndex(DomainsDatabaseHelper.SSL_ISSUED_TO_COMMON_NAME));
         String savedSslCertificateIssuedToONameString = domainCursor.getString(domainCursor.getColumnIndex(DomainsDatabaseHelper.SSL_ISSUED_TO_ORGANIZATION));
@@ -211,20 +216,23 @@ public class DomainSettingsFragment extends Fragment {
         ArrayAdapter<CharSequence> translatedUserAgentArrayAdapter = ArrayAdapter.createFromResource(context, R.array.translated_domain_settings_user_agent_names, R.layout.domain_settings_spinner_item);
         ArrayAdapter<CharSequence> fontSizeArrayAdapter = ArrayAdapter.createFromResource(context, R.array.domain_settings_font_size_entries, R.layout.domain_settings_spinner_item);
         ArrayAdapter<CharSequence> fontSizeEntryValuesArrayAdapter = ArrayAdapter.createFromResource(context, R.array.domain_settings_font_size_entry_values, R.layout.domain_settings_spinner_item);
-        final ArrayAdapter<CharSequence> displayImagesArrayAdapter = ArrayAdapter.createFromResource(context, R.array.display_webpage_images_array, R.layout.domain_settings_spinner_item);
+        ArrayAdapter<CharSequence> swipeToRefreshArrayAdapter = ArrayAdapter.createFromResource(context, R.array.swipe_to_refresh_array, R.layout.domain_settings_spinner_item);
         ArrayAdapter<CharSequence> nightModeArrayAdapter = ArrayAdapter.createFromResource(context, R.array.night_mode_array, R.layout.domain_settings_spinner_item);
+        ArrayAdapter<CharSequence> displayImagesArrayAdapter = ArrayAdapter.createFromResource(context, R.array.display_webpage_images_array, R.layout.domain_settings_spinner_item);
 
         // Set the `DropDownViewResource` on the `Spinners`.
-        translatedUserAgentArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_item);
-        fontSizeArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_item);
-        displayImagesArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_item);
-        nightModeArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_item);
+        translatedUserAgentArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_items);
+        fontSizeArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_items);
+        swipeToRefreshArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_items);
+        nightModeArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_items);
+        displayImagesArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_items);
 
         // Set the `ArrayAdapters` for the `Spinners`.
         userAgentSpinner.setAdapter(translatedUserAgentArrayAdapter);
         fontSizeSpinner.setAdapter(fontSizeArrayAdapter);
-        displayWebpageImagesSpinner.setAdapter(displayImagesArrayAdapter);
+        swipeToRefreshSpinner.setAdapter(swipeToRefreshArrayAdapter);
         nightModeSpinner.setAdapter(nightModeArrayAdapter);
+        displayWebpageImagesSpinner.setAdapter(displayImagesArrayAdapter);
 
         // Create a `SpannableStringBuilder` for each `TextView` that needs multiple colors of text.
         SpannableStringBuilder savedSslCertificateIssuedToCNameStringBuilder = new SpannableStringBuilder(cNameLabel + savedSslCertificateIssuedToCNameString);
@@ -329,7 +337,7 @@ public class DomainSettingsFragment extends Fragment {
         // Create a `boolean` to track if night mode is enabled.
         boolean nightModeEnabled = (nightModeInt == DomainsDatabaseHelper.NIGHT_MODE_ENABLED) || ((nightModeInt == DomainsDatabaseHelper.NIGHT_MODE_SYSTEM_DEFAULT) && defaultNightModeBoolean);
 
-        // Disable the JavaScript `Switch` if night mode is enabled.
+        // Disable the JavaScript switch if night mode is enabled.
         if (nightModeEnabled) {
             javaScriptEnabledSwitch.setEnabled(false);
         } else {
@@ -343,7 +351,7 @@ public class DomainSettingsFragment extends Fragment {
             javaScriptImageView.setImageDrawable(resources.getDrawable(R.drawable.privacy_mode));
         }
 
-        // Set the JavaScript `Switch` status.
+        // Set the JavaScript switch status.
         if (javaScriptEnabledInt == 1) {  // JavaScript is enabled.
             javaScriptEnabledSwitch.setChecked(true);
         } else {  // JavaScript is disabled.
@@ -402,7 +410,7 @@ public class DomainSettingsFragment extends Fragment {
                 }
             }
         } else {  // Third-party cookies cannot be configured for API <= 21.
-            // Hide the `LinearLayout` for third-party cookies.
+            // Hide the LinearLayout for third-party cookies.
             thirdPartyCookiesLinearLayout.setVisibility(View.GONE);
         }
 
@@ -648,7 +656,7 @@ public class DomainSettingsFragment extends Fragment {
             }
         }
 
-        // Open the user agent spinner when the `TextView` is clicked.
+        // Open the user agent spinner when the TextView is clicked.
         userAgentTextView.setOnClickListener((View v) -> {
             // Open the user agent spinner.
             userAgentSpinner.performClick();
@@ -662,81 +670,80 @@ public class DomainSettingsFragment extends Fragment {
         int defaultFontSizeArrayPosition = fontSizeEntryValuesArrayAdapter.getPosition(defaultFontSizeString);
         fontSizeTextView.setText(fontSizeArrayAdapter.getItem(defaultFontSizeArrayPosition));
 
-        // Set the display options for `fontSizeTextView`.
+        // Set the display options for the font size TextView.
         if (fontSizeArrayPosition == 0) {  // System default font size is selected.  Display `fontSizeTextView`.
             fontSizeTextView.setVisibility(View.VISIBLE);
         } else {  // A custom font size is specified.  Hide `fontSizeTextView`.
             fontSizeTextView.setVisibility(View.GONE);
         }
 
-        // Open the font size spinner when the `TextView` is clicked.
+        // Open the font size spinner when the TextView is clicked.
         fontSizeTextView.setOnClickListener((View v) -> {
             // Open the user agent spinner.
             fontSizeSpinner.performClick();
         });
 
-        // Display the website images mode in the spinner.
-        displayWebpageImagesSpinner.setSelection(displayImagesInt);
+        // Display the swipe to refresh selection in the spinner.
+        swipeToRefreshSpinner.setSelection(swipeToRefreshInt);
 
-        // Set the default display images text.
-        if (defaultDisplayWebpageImagesBoolean) {
-            displayImagesTextView.setText(displayImagesArrayAdapter.getItem(DomainsDatabaseHelper.DISPLAY_WEBPAGE_IMAGES_ENABLED));
+        // Set the swipe to refresh text.
+        if (defaultSwipeToRefreshBoolean) {
+            swipeToRefreshTextView.setText(swipeToRefreshArrayAdapter.getItem(DomainsDatabaseHelper.SWIPE_TO_REFRESH_ENABLED));
         } else {
-            displayImagesTextView.setText(displayImagesArrayAdapter.getItem(DomainsDatabaseHelper.DISPLAY_WEBPAGE_IMAGES_DISABLED));
+            swipeToRefreshTextView.setText(swipeToRefreshArrayAdapter.getItem(DomainsDatabaseHelper.SWIPE_TO_REFRESH_DISABLED));
         }
 
-        // Set the display website images icon and `TextView` settings.  Once the minimum API >= 21 a selector can be used as the tint mode instead of specifying different icons.
-        switch (displayImagesInt) {
-            case DomainsDatabaseHelper.DISPLAY_WEBPAGE_IMAGES_SYSTEM_DEFAULT:
-                if (defaultDisplayWebpageImagesBoolean) {  // Display webpage images enabled by default.
+        // Set the swipe to refresh icon and TextView settings.  Once the minimum API >= 21 a selector can be used as the tint mode instead of specifying different icons.
+        switch (swipeToRefreshInt) {
+            case DomainsDatabaseHelper.SWIPE_TO_REFRESH_SYSTEM_DEFAULT:
+                if (defaultSwipeToRefreshBoolean) {  // Swipe to refresh is enabled by default.
                     // Set the icon according to the theme.
                     if (MainWebViewActivity.darkTheme) {
-                        displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_enabled_dark));
+                        swipeToRefreshImageView.setImageDrawable(resources.getDrawable(R.drawable.refresh_enabled_dark));
                     } else {
-                        displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_enabled_light));
+                        swipeToRefreshImageView.setImageDrawable(resources.getDrawable(R.drawable.refresh_enabled_light));
                     }
-                } else {  // Display webpage images disabled by default.
+                } else {  // Swipe to refresh is disabled by default
                     // Set the icon according to the theme.
                     if (MainWebViewActivity.darkTheme) {
-                        displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_disabled_dark));
+                        swipeToRefreshImageView.setImageDrawable(resources.getDrawable(R.drawable.refresh_disabled_dark));
                     } else {
-                        displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_disabled_light));
+                        swipeToRefreshImageView.setImageDrawable(resources.getDrawable(R.drawable.refresh_disabled_light));
                     }
                 }
 
-                // Show `displayImagesTextView`.
-                displayImagesTextView.setVisibility(View.VISIBLE);
+                // Show the swipe to refresh TextView.
+                swipeToRefreshTextView.setVisibility(View.VISIBLE);
                 break;
 
-            case DomainsDatabaseHelper.DISPLAY_WEBPAGE_IMAGES_ENABLED:
+            case DomainsDatabaseHelper.SWIPE_TO_REFRESH_ENABLED:
                 // Set the icon according to the theme.
                 if (MainWebViewActivity.darkTheme) {
-                    displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_enabled_dark));
+                    swipeToRefreshImageView.setImageDrawable(resources.getDrawable(R.drawable.refresh_enabled_dark));
                 } else {
-                    displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_enabled_light));
+                    swipeToRefreshImageView.setImageDrawable(resources.getDrawable(R.drawable.refresh_enabled_light));
                 }
 
-                // Hide `displayImagesTextView`.
-                displayImagesTextView.setVisibility(View.GONE);
+                // Hide the swipe to refresh TextView.`
+                swipeToRefreshTextView.setVisibility(View.GONE);
                 break;
 
-            case DomainsDatabaseHelper.DISPLAY_WEBPAGE_IMAGES_DISABLED:
+            case DomainsDatabaseHelper.SWIPE_TO_REFRESH_DISABLED:
                 // Set the icon according to the theme.
                 if (MainWebViewActivity.darkTheme) {
-                    displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_disabled_dark));
+                    swipeToRefreshImageView.setImageDrawable(resources.getDrawable(R.drawable.refresh_disabled_dark));
                 } else {
-                    displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_disabled_light));
+                    swipeToRefreshImageView.setImageDrawable(resources.getDrawable(R.drawable.refresh_disabled_light));
                 }
 
-                // Hide `displayImagesTextView`.
-                displayImagesTextView.setVisibility(View.GONE);
-                break;
+                // Hide the swipe to refresh TextView.
+                swipeToRefreshTextView.setVisibility(View.GONE);
         }
 
-        // Open the display images spinner when the `TextView` is clicked.
-        displayImagesTextView.setOnClickListener((View v) -> {
-            // Open the user agent spinner.
-            displayWebpageImagesSpinner.performClick();
+        // Open the swipe to refresh spinner when the TextView is clicked.
+        swipeToRefreshTextView.setOnClickListener((View v) -> {
+            // Open the swipe to refresh spinner.
+            swipeToRefreshSpinner.performClick();
         });
 
         // Display the night mode in the spinner.
@@ -749,8 +756,8 @@ public class DomainSettingsFragment extends Fragment {
             nightModeTextView.setText(nightModeArrayAdapter.getItem(DomainsDatabaseHelper.NIGHT_MODE_DISABLED));
         }
 
-        // Set the night mode icon and `TextView` settings.  Once the minimum API >= 21 a selector can be used as the tint mode instead of specifying different icons.
-        switch (displayImagesInt) {
+        // Set the night mode icon and TextView settings.  Once the minimum API >= 21 a selector can be used as the tint mode instead of specifying different icons.
+        switch (nightModeInt) {
             case DomainsDatabaseHelper.NIGHT_MODE_SYSTEM_DEFAULT:
                 if (defaultNightModeBoolean) {  // Night mode enabled by default.
                     // Set the icon according to the theme.
@@ -768,7 +775,7 @@ public class DomainSettingsFragment extends Fragment {
                     }
                 }
 
-                // Show `nightModeTextView`.
+                // Show night mode TextView.
                 nightModeTextView.setVisibility(View.VISIBLE);
                 break;
 
@@ -780,7 +787,7 @@ public class DomainSettingsFragment extends Fragment {
                     nightModeImageView.setImageDrawable(resources.getDrawable(R.drawable.night_mode_enabled_light));
                 }
 
-                // Hide `nightModeTextView`.
+                // Hide the night mode TextView.
                 nightModeTextView.setVisibility(View.GONE);
                 break;
 
@@ -792,16 +799,80 @@ public class DomainSettingsFragment extends Fragment {
                     nightModeImageView.setImageDrawable(resources.getDrawable(R.drawable.night_mode_disabled_light));
                 }
 
-                // Hide `nightModeTextView`.
+                // Hide the night mode TextView.
                 nightModeTextView.setVisibility(View.GONE);
                 break;
         }
 
-        // Open the night mode spinner when the `TextView` is clicked.
+        // Open the night mode spinner when the TextView is clicked.
         nightModeTextView.setOnClickListener((View v) -> {
-            // Open the user agent spinner.
+            // Open the night mode spinner.
             nightModeSpinner.performClick();
         });
+
+        // Display the website images mode in the spinner.
+        displayWebpageImagesSpinner.setSelection(displayImagesInt);
+
+        // Set the default display images text.
+        if (defaultDisplayWebpageImagesBoolean) {
+            displayImagesTextView.setText(displayImagesArrayAdapter.getItem(DomainsDatabaseHelper.DISPLAY_WEBPAGE_IMAGES_ENABLED));
+        } else {
+            displayImagesTextView.setText(displayImagesArrayAdapter.getItem(DomainsDatabaseHelper.DISPLAY_WEBPAGE_IMAGES_DISABLED));
+        }
+
+        // Set the display website images icon and TextView settings.  Once the minimum API >= 21 a selector can be used as the tint mode instead of specifying different icons.
+        switch (displayImagesInt) {
+            case DomainsDatabaseHelper.DISPLAY_WEBPAGE_IMAGES_SYSTEM_DEFAULT:
+                if (defaultDisplayWebpageImagesBoolean) {  // Display webpage images enabled by default.
+                    // Set the icon according to the theme.
+                    if (MainWebViewActivity.darkTheme) {
+                        displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_enabled_dark));
+                    } else {
+                        displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_enabled_light));
+                    }
+                } else {  // Display webpage images disabled by default.
+                    // Set the icon according to the theme.
+                    if (MainWebViewActivity.darkTheme) {
+                        displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_disabled_dark));
+                    } else {
+                        displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_disabled_light));
+                    }
+                }
+
+                // Show the display images TextView.
+                displayImagesTextView.setVisibility(View.VISIBLE);
+                break;
+
+            case DomainsDatabaseHelper.DISPLAY_WEBPAGE_IMAGES_ENABLED:
+                // Set the icon according to the theme.
+                if (MainWebViewActivity.darkTheme) {
+                    displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_enabled_dark));
+                } else {
+                    displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_enabled_light));
+                }
+
+                // Hide the display images TextView.
+                displayImagesTextView.setVisibility(View.GONE);
+                break;
+
+            case DomainsDatabaseHelper.DISPLAY_WEBPAGE_IMAGES_DISABLED:
+                // Set the icon according to the theme.
+                if (MainWebViewActivity.darkTheme) {
+                    displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_disabled_dark));
+                } else {
+                    displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_disabled_light));
+                }
+
+                // Hide the display images TextView.
+                displayImagesTextView.setVisibility(View.GONE);
+                break;
+        }
+
+        // Open the display images spinner when the TextView is clicked.
+        displayImagesTextView.setOnClickListener((View v) -> {
+            // Open the user agent spinner.
+            displayWebpageImagesSpinner.performClick();
+        });
         
         // Set the pinned SSL certificate icon.
         if (pinnedSslCertificateInt == 1) {  // Pinned SSL certificate is enabled.  Once the minimum API >= 21 a selector can be used as the tint mode instead of specifying different icons.
@@ -1303,56 +1374,55 @@ public class DomainSettingsFragment extends Fragment {
             }
         });
 
-        // Set the display webpage images spinner listener.
-        displayWebpageImagesSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+        // Set the swipe to refresh spinner listener.
+        swipeToRefreshSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
             @Override
             public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-                // Update the icon and the visibility of `displayImagesTextView`.
+                // Update the icon and the visibility of `nightModeTextView`.  Once the minimum API >= 21 a selector can be used as the tint mode instead of specifying different icons.
                 switch (position) {
-                    case DomainsDatabaseHelper.DISPLAY_WEBPAGE_IMAGES_SYSTEM_DEFAULT:
-                        if (defaultDisplayWebpageImagesBoolean) {
+                    case DomainsDatabaseHelper.SWIPE_TO_REFRESH_SYSTEM_DEFAULT:
+                        if (defaultSwipeToRefreshBoolean) {  // Swipe to refresh enabled by default.
                             // Set the icon according to the theme.
                             if (MainWebViewActivity.darkTheme) {
-                                displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_enabled_dark));
+                                swipeToRefreshImageView.setImageDrawable(resources.getDrawable(R.drawable.refresh_enabled_dark));
                             } else {
-                                displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_enabled_light));
+                                swipeToRefreshImageView.setImageDrawable(resources.getDrawable(R.drawable.refresh_enabled_light));
                             }
-                        } else {
+                        } else {  // Swipe to refresh disabled by default.
                             // Set the icon according to the theme.
                             if (MainWebViewActivity.darkTheme) {
-                                displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_disabled_dark));
+                                swipeToRefreshImageView.setImageDrawable(resources.getDrawable(R.drawable.refresh_disabled_dark));
                             } else {
-                                displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_disabled_light));
+                                swipeToRefreshImageView.setImageDrawable(resources.getDrawable(R.drawable.refresh_disabled_light));
                             }
                         }
 
-                        // Show `displayImagesTextView`.
-                        displayImagesTextView.setVisibility(View.VISIBLE);
+                        // Show the swipe to refresh TextView.
+                        swipeToRefreshTextView.setVisibility(View.VISIBLE);
                         break;
 
-                    case DomainsDatabaseHelper.DISPLAY_WEBPAGE_IMAGES_ENABLED:
+                    case DomainsDatabaseHelper.SWIPE_TO_REFRESH_ENABLED:
                         // Set the icon according to the theme.
                         if (MainWebViewActivity.darkTheme) {
-                            displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_enabled_dark));
+                            swipeToRefreshImageView.setImageDrawable(resources.getDrawable(R.drawable.refresh_enabled_dark));
                         } else {
-                            displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_enabled_light));
+                            swipeToRefreshImageView.setImageDrawable(resources.getDrawable(R.drawable.refresh_enabled_light));
                         }
 
-                        // Hide `displayImagesTextView`.
-                        displayImagesTextView.setVisibility(View.GONE);
+                        // Hide the swipe to refresh TextView.
+                        swipeToRefreshTextView.setVisibility(View.GONE);
                         break;
 
-                    case DomainsDatabaseHelper.DISPLAY_WEBPAGE_IMAGES_DISABLED:
+                    case DomainsDatabaseHelper.SWIPE_TO_REFRESH_DISABLED:
                         // Set the icon according to the theme.
                         if (MainWebViewActivity.darkTheme) {
-                            displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_disabled_dark));
+                            swipeToRefreshImageView.setImageDrawable(resources.getDrawable(R.drawable.refresh_disabled_dark));
                         } else {
-                            displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_disabled_light));
+                            swipeToRefreshImageView.setImageDrawable(resources.getDrawable(R.drawable.refresh_disabled_light));
                         }
 
-                        // Hide `displayImagesTextView`.
-                        displayImagesTextView.setVisibility(View.GONE);
-                        break;
+                        // Hide the swipe to refresh TextView.
+                        swipeToRefreshTextView.setVisibility(View.GONE);
                 }
             }
 
@@ -1385,7 +1455,7 @@ public class DomainSettingsFragment extends Fragment {
                             }
                         }
 
-                        // Show `nightModeTextView`.
+                        // Show the night mode TextView.
                         nightModeTextView.setVisibility(View.VISIBLE);
                         break;
 
@@ -1476,6 +1546,65 @@ public class DomainSettingsFragment extends Fragment {
                 // Do nothing.
             }
         });
+
+        // Set the display webpage images spinner listener.
+        displayWebpageImagesSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+            @Override
+            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+                // Update the icon and the visibility of `displayImagesTextView`.
+                switch (position) {
+                    case DomainsDatabaseHelper.DISPLAY_WEBPAGE_IMAGES_SYSTEM_DEFAULT:
+                        if (defaultDisplayWebpageImagesBoolean) {
+                            // Set the icon according to the theme.
+                            if (MainWebViewActivity.darkTheme) {
+                                displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_enabled_dark));
+                            } else {
+                                displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_enabled_light));
+                            }
+                        } else {
+                            // Set the icon according to the theme.
+                            if (MainWebViewActivity.darkTheme) {
+                                displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_disabled_dark));
+                            } else {
+                                displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_disabled_light));
+                            }
+                        }
+
+                        // Show `displayImagesTextView`.
+                        displayImagesTextView.setVisibility(View.VISIBLE);
+                        break;
+
+                    case DomainsDatabaseHelper.DISPLAY_WEBPAGE_IMAGES_ENABLED:
+                        // Set the icon according to the theme.
+                        if (MainWebViewActivity.darkTheme) {
+                            displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_enabled_dark));
+                        } else {
+                            displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_enabled_light));
+                        }
+
+                        // Hide `displayImagesTextView`.
+                        displayImagesTextView.setVisibility(View.GONE);
+                        break;
+
+                    case DomainsDatabaseHelper.DISPLAY_WEBPAGE_IMAGES_DISABLED:
+                        // Set the icon according to the theme.
+                        if (MainWebViewActivity.darkTheme) {
+                            displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_disabled_dark));
+                        } else {
+                            displayWebpageImagesImageView.setImageDrawable(resources.getDrawable(R.drawable.images_disabled_light));
+                        }
+
+                        // Hide `displayImagesTextView`.
+                        displayImagesTextView.setVisibility(View.GONE);
+                        break;
+                }
+            }
+
+            @Override
+            public void onNothingSelected(AdapterView<?> parent) {
+                // Do nothing.
+            }
+        });
         
         // Set the pinned SSL certificate switch listener.
         pinnedSslCertificateSwitch.setOnCheckedChangeListener((CompoundButton buttonView, boolean isChecked) -> {
index 55b852e..88d5799 100644 (file)
@@ -194,7 +194,7 @@ public class SettingsFragment extends PreferenceFragment {
         searchCustomURLPreference.setEnabled(searchString.equals("Custom URL"));
 
 
-        // Enable `translucentNavigationBarPreference` only if full screen browsing mode is enabled and `hide_system_bars` is disabled.
+        // Enable the translucent navigation bar preference only if full screen browsing mode is enabled and `hide_system_bars` is disabled.
         translucentNavigationBarPreference.setEnabled(fullScreenBrowsingMode && !hideSystemBars);
 
         // Set the status of the `Clear and Exit` preferences.
@@ -203,10 +203,10 @@ public class SettingsFragment extends PreferenceFragment {
         clearFormDataPreference.setEnabled(!clearEverything);
         clearCachePreference.setEnabled(!clearEverything);
 
-        // Set the homepage URL as the summary text for the `Homepage` preference when the preference screen is loaded.  The default is `https://duckduckgo.com`.
-        homepagePreference.setSummary(savedPreferences.getString("homepage", "https://duckduckgo.com"));
+        // Set the homepage URL as the summary text for the homepage preference.
+        homepagePreference.setSummary(savedPreferences.getString("homepage", "https://duckduckgo.com/?kao=-1&amp;kak=-1"));
 
-        // Set the default font size as the summary text for the `Default Font Size` preference when the preference screen is loaded.  The default is `100`.
+        // Set the default font size as the summary text for the preference.
         defaultFontSizePreference.setSummary(savedPreferences.getString("default_font_size", "100") + "%%");
 
         // Disable `javaScriptPreference` if `nightModeBoolean` is true.  JavaScript will be enabled for all web pages.
@@ -448,7 +448,7 @@ public class SettingsFragment extends PreferenceFragment {
         }
 
         // Set the full screen browsing mode icons.
-        if (fullScreenBrowsingMode) {  // `fullScreenBrowsingModeBoolean` is `true`.
+        if (fullScreenBrowsingMode) {  // Full screen browsing mode is enabled.
             // Set the `fullScreenBrowsingModePreference` icon according to the theme.
             if (MainWebViewActivity.darkTheme) {
                 fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_enabled_dark);
@@ -489,7 +489,7 @@ public class SettingsFragment extends PreferenceFragment {
                     }
                 }
             }
-        } else {  // `fullScreenBrowsingModeBoolean` is `false`.
+        } else {  // Full screen browsing mode is disabled.
             // Set the icons according to the theme.
             if (MainWebViewActivity.darkTheme) {
                 fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_disabled_dark);
@@ -502,7 +502,7 @@ public class SettingsFragment extends PreferenceFragment {
             }
         }
 
-        // Set the `clearEverythingPreference` icon.
+        // Set the clear everything preference icon.
         if (clearEverything) {
             if (MainWebViewActivity.darkTheme) {
                 clearEverythingPreference.setIcon(R.drawable.clear_everything_enabled_dark);
@@ -513,7 +513,7 @@ public class SettingsFragment extends PreferenceFragment {
             clearEverythingPreference.setIcon(R.drawable.clear_everything_disabled);
         }
 
-        // Set the `clearCookiesPreference` icon.
+        // Set the clear cookies preference icon.
         if (clearEverything || savedPreferences.getBoolean("clear_cookies", true)) {
             if (MainWebViewActivity.darkTheme) {
                 clearCookiesPreference.setIcon(R.drawable.cookies_cleared_dark);
@@ -524,7 +524,7 @@ public class SettingsFragment extends PreferenceFragment {
             clearCookiesPreference.setIcon(R.drawable.cookies_warning);
         }
 
-        // Set the `clearDomStoragePreference` icon.
+        // Set the clear DOM storage preference icon.
         if (clearEverything || savedPreferences.getBoolean("clear_dom_storage", true)) {
             if (MainWebViewActivity.darkTheme) {
                 clearDomStoragePreference.setIcon(R.drawable.dom_storage_cleared_dark);
@@ -535,7 +535,7 @@ public class SettingsFragment extends PreferenceFragment {
             clearDomStoragePreference.setIcon(R.drawable.dom_storage_warning);
         }
 
-        // Set the `clearFormDataPreference` icon.
+        // Set the clear form data preference icon.
         if (clearEverything || savedPreferences.getBoolean("clear_form_data", true)) {
             if (MainWebViewActivity.darkTheme) {
                 clearFormDataPreference.setIcon(R.drawable.form_data_cleared_dark);
@@ -546,7 +546,7 @@ public class SettingsFragment extends PreferenceFragment {
             clearFormDataPreference.setIcon(R.drawable.form_data_warning);
         }
 
-        // Set the `clearCachePreference` icon.
+        // Set the clear cache preference icon.
         if (clearEverything || savedPreferences.getBoolean("clear_cache", true)) {
             if (MainWebViewActivity.darkTheme) {
                 clearCachePreference.setIcon(R.drawable.cache_cleared_dark);
@@ -557,8 +557,8 @@ public class SettingsFragment extends PreferenceFragment {
             clearCachePreference.setIcon(R.drawable.cache_warning);
         }
 
-        // Set the `swipeToRefreshPreference` icon.
-        if (savedPreferences.getBoolean("swipe_to_refresh", false)) {
+        // Set the swipe to refresh preference icon.
+        if (savedPreferences.getBoolean("swipe_to_refresh", true)) {
             if (MainWebViewActivity.darkTheme) {
                 swipeToRefreshPreference.setIcon(R.drawable.refresh_enabled_dark);
             } else {
@@ -572,7 +572,7 @@ public class SettingsFragment extends PreferenceFragment {
             }
         }
 
-        // Set the `displayAdditionalAppBarIconsPreference` icon.
+        // Set the display additional app bar icons preference icon.
         if (savedPreferences.getBoolean("display_additional_app_bar_icons", false)) {
             if (MainWebViewActivity.darkTheme) {
                 displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_enabled_dark);
@@ -587,14 +587,14 @@ public class SettingsFragment extends PreferenceFragment {
             }
         }
 
-        // Set the `darkThemePreference` icon.
+        // Set the dark theme preference icon.
         if (savedPreferences.getBoolean("dark_theme", false)) {
             darkThemePreference.setIcon(R.drawable.theme_dark);
         } else {
             darkThemePreference.setIcon(R.drawable.theme_light);
         }
 
-        // Set the `nightModePreference` icon.
+        // Set the night mode preference icon.
         if (nightMode) {
             if (MainWebViewActivity.darkTheme) {
                 nightModePreference.setIcon(R.drawable.night_mode_enabled_dark);
@@ -609,7 +609,7 @@ public class SettingsFragment extends PreferenceFragment {
             }
         }
 
-        // Set the `displayWebpageImagesPreference` icon.
+        // Set the display webpage images preference icon.
         if (savedPreferences.getBoolean("display_webpage_images", true)) {
             if (MainWebViewActivity.darkTheme) {
                 displayWebpageImagesPreference.setIcon(R.drawable.images_enabled_dark);
@@ -1327,7 +1327,7 @@ public class SettingsFragment extends PreferenceFragment {
 
                 case "swipe_to_refresh":
                     // Update the icon.
-                    if (sharedPreferences.getBoolean("swipe_to_refresh", false)) {
+                    if (sharedPreferences.getBoolean("swipe_to_refresh", true)) {
                         if (MainWebViewActivity.darkTheme) {
                             swipeToRefreshPreference.setIcon(R.drawable.refresh_enabled_dark);
                         } else {
index 350b33b..563040a 100644 (file)
@@ -28,7 +28,7 @@ import android.database.sqlite.SQLiteOpenHelper;
 import android.preference.PreferenceManager;
 
 public class DomainsDatabaseHelper extends SQLiteOpenHelper {
-    private static final int SCHEMA_VERSION = 5;
+    private static final int SCHEMA_VERSION = 6;
     private static final String DOMAINS_DATABASE = "domains.db";
     private static final String DOMAINS_TABLE = "domains";
 
@@ -45,8 +45,9 @@ public class DomainsDatabaseHelper extends SQLiteOpenHelper {
     public static final String ENABLE_FANBOYS_SOCIAL_BLOCKING_LIST = "enablefanboyssocialblockinglist";
     public static final String USER_AGENT = "useragent";
     public static final String FONT_SIZE = "fontsize";
-    public static final String DISPLAY_IMAGES = "displayimages";
+    public static final String SWIPE_TO_REFRESH = "swipetorefresh";
     public static final String NIGHT_MODE = "nightmode";
+    public static final String DISPLAY_IMAGES = "displayimages";
     public static final String PINNED_SSL_CERTIFICATE = "pinnedsslcertificate";
     public static final String SSL_ISSUED_TO_COMMON_NAME = "sslissuedtocommonname";
     public static final String SSL_ISSUED_TO_ORGANIZATION = "sslissuedtoorganization";
@@ -57,16 +58,21 @@ public class DomainsDatabaseHelper extends SQLiteOpenHelper {
     public static final String SSL_START_DATE = "sslstartdate";
     public static final String SSL_END_DATE = "sslenddate";
 
-    // Display webpage images constants.
-    public static final int DISPLAY_WEBPAGE_IMAGES_SYSTEM_DEFAULT = 0;
-    public static final int DISPLAY_WEBPAGE_IMAGES_ENABLED = 1;
-    public static final int DISPLAY_WEBPAGE_IMAGES_DISABLED = 2;
+    // Swipe to refresh constants.
+    public static final int SWIPE_TO_REFRESH_SYSTEM_DEFAULT = 0;
+    public static final int SWIPE_TO_REFRESH_ENABLED = 1;
+    public static final int SWIPE_TO_REFRESH_DISABLED = 2;
 
     // Night mode constants.
     public static final int NIGHT_MODE_SYSTEM_DEFAULT = 0;
     public static final int NIGHT_MODE_ENABLED = 1;
     public static final int NIGHT_MODE_DISABLED = 2;
 
+    // Display webpage images constants.
+    public static final int DISPLAY_WEBPAGE_IMAGES_SYSTEM_DEFAULT = 0;
+    public static final int DISPLAY_WEBPAGE_IMAGES_ENABLED = 1;
+    public static final int DISPLAY_WEBPAGE_IMAGES_DISABLED = 2;
+
     private Context appContext;
 
     // Initialize the database.  The lint warnings for the unused parameters are suppressed.
@@ -94,8 +100,9 @@ public class DomainsDatabaseHelper extends SQLiteOpenHelper {
                 ENABLE_FANBOYS_SOCIAL_BLOCKING_LIST + " BOOLEAN, " +
                 USER_AGENT + " TEXT, " +
                 FONT_SIZE + " INTEGER, " +
-                DISPLAY_IMAGES + " INTEGER, " +
+                SWIPE_TO_REFRESH + " INTEGER, " +
                 NIGHT_MODE + " INTEGER, " +
+                DISPLAY_IMAGES + " INTEGER, " +
                 PINNED_SSL_CERTIFICATE + " BOOLEAN, " +
                 SSL_ISSUED_TO_COMMON_NAME + " TEXT, " +
                 SSL_ISSUED_TO_ORGANIZATION + " TEXT, " +
@@ -134,7 +141,7 @@ public class DomainsDatabaseHelper extends SQLiteOpenHelper {
 
             // Upgrade from schema version 3.
             case 3:
-                // Add the `NIGHT_MODE` column.
+                // Add the Night Mode column.
                 domainsDatabase.execSQL("ALTER TABLE " + DOMAINS_TABLE + " ADD COLUMN " + NIGHT_MODE + " INTEGER");
 
             // Upgrade from schema version 4.
@@ -181,6 +188,11 @@ public class DomainsDatabaseHelper extends SQLiteOpenHelper {
                 } else {
                     domainsDatabase.execSQL("UPDATE " + DOMAINS_TABLE + " SET " + ENABLE_FANBOYS_SOCIAL_BLOCKING_LIST + " = " + 0);
                 }
+
+            // Upgrade from schema version 5.
+            case 5:
+                // Add the swipe to refresh column.
+                domainsDatabase.execSQL("ALTER TABLE " + DOMAINS_TABLE + " ADD COLUMN " + SWIPE_TO_REFRESH + " INTEGER");
         }
     }
 
@@ -266,8 +278,9 @@ public class DomainsDatabaseHelper extends SQLiteOpenHelper {
         domainContentValues.put(ENABLE_FANBOYS_SOCIAL_BLOCKING_LIST, fanboySocialBlockingListEnabled);
         domainContentValues.put(USER_AGENT, "System default user agent");
         domainContentValues.put(FONT_SIZE, 0);
-        domainContentValues.put(DISPLAY_IMAGES, 0);
+        domainContentValues.put(SWIPE_TO_REFRESH, 0);
         domainContentValues.put(NIGHT_MODE, 0);
+        domainContentValues.put(DISPLAY_IMAGES, 0);
 
         // Get a writable database handle.
         SQLiteDatabase domainsDatabase = this.getWritableDatabase();
@@ -284,7 +297,7 @@ public class DomainsDatabaseHelper extends SQLiteOpenHelper {
 
     public void updateDomainExceptCertificate(int databaseId, String domainName, boolean javaScriptEnabled, boolean firstPartyCookiesEnabled, boolean thirdPartyCookiesEnabled, boolean domStorageEnabled,
                                               boolean formDataEnabled, boolean easyListEnabled, boolean easyPrivacyEnabled, boolean fanboysAnnoyanceEnabled, boolean fanboysSocialBlockingEnabled,
-                                              String userAgent, int fontSize, int displayImages, int nightMode, boolean pinnedSslCertificate) {
+                                              String userAgent, int fontSize, int swipeToRefresh, int nightMode, int displayImages, boolean pinnedSslCertificate) {
 
         // Store the domain data in a `ContentValues`.
         ContentValues domainContentValues = new ContentValues();
@@ -302,8 +315,9 @@ public class DomainsDatabaseHelper extends SQLiteOpenHelper {
         domainContentValues.put(ENABLE_FANBOYS_SOCIAL_BLOCKING_LIST, fanboysSocialBlockingEnabled);
         domainContentValues.put(USER_AGENT, userAgent);
         domainContentValues.put(FONT_SIZE, fontSize);
-        domainContentValues.put(DISPLAY_IMAGES, displayImages);
+        domainContentValues.put(SWIPE_TO_REFRESH, swipeToRefresh);
         domainContentValues.put(NIGHT_MODE, nightMode);
+        domainContentValues.put(DISPLAY_IMAGES, displayImages);
         domainContentValues.put(PINNED_SSL_CERTIFICATE, pinnedSslCertificate);
 
         // Get a writable database handle.
@@ -318,7 +332,7 @@ public class DomainsDatabaseHelper extends SQLiteOpenHelper {
 
     public void updateDomainWithCertificate(int databaseId, String domainName, boolean javaScriptEnabled, boolean firstPartyCookiesEnabled, boolean thirdPartyCookiesEnabled, boolean domStorageEnabled,
                                             boolean formDataEnabled, boolean easyListEnabled, boolean easyPrivacyEnabled, boolean fanboysAnnoyanceEnabled, boolean fanboysSocialBlockingEnabled, String userAgent,
-                                            int fontSize, int displayImages, int nightMode, boolean pinnedSslCertificate, String sslIssuedToCommonName, String sslIssuedToOrganization,
+                                            int fontSize, int swipeToRefresh, int nightMode, int displayImages, boolean pinnedSslCertificate, String sslIssuedToCommonName, String sslIssuedToOrganization,
                                             String sslIssuedToOrganizationalUnit, String sslIssuedByCommonName, String sslIssuedByOrganization, String sslIssuedByOrganizationalUnit, long sslStartDate,
                                             long sslEndDate) {
 
@@ -338,8 +352,9 @@ public class DomainsDatabaseHelper extends SQLiteOpenHelper {
         domainContentValues.put(ENABLE_FANBOYS_SOCIAL_BLOCKING_LIST, fanboysSocialBlockingEnabled);
         domainContentValues.put(USER_AGENT, userAgent);
         domainContentValues.put(FONT_SIZE, fontSize);
-        domainContentValues.put(DISPLAY_IMAGES, displayImages);
+        domainContentValues.put(SWIPE_TO_REFRESH, swipeToRefresh);
         domainContentValues.put(NIGHT_MODE, nightMode);
+        domainContentValues.put(DISPLAY_IMAGES, displayImages);
         domainContentValues.put(PINNED_SSL_CERTIFICATE, pinnedSslCertificate);
         domainContentValues.put(SSL_ISSUED_TO_COMMON_NAME, sslIssuedToCommonName);
         domainContentValues.put(SSL_ISSUED_TO_ORGANIZATION, sslIssuedToOrganization);
index 769072a..64d3747 100644 (file)
 
         </LinearLayout>
 
-        <!-- Display Images. -->
+        <!-- Swipe to Refresh. -->
         <LinearLayout
             android:layout_height="wrap_content"
             android:layout_width="match_parent"
                 android:orientation="horizontal" >
 
                 <ImageView
-                    android:id="@+id/domain_settings_display_webpage_images_imageview"
+                    android:id="@+id/domain_settings_swipe_to_refresh_imageview"
                     android:layout_height="wrap_content"
                     android:layout_width="wrap_content"
                     android:layout_marginTop="1dp"
                     android:layout_marginEnd="10dp"
                     android:layout_gravity="center_vertical"
-                    android:contentDescription="@string/display_webpage_images" />
+                    android:contentDescription="@string/swipe_to_refresh_preference" />
 
                 <Spinner
-                    android:id="@+id/domain_settings_display_webpage_images_spinner"
+                    android:id="@+id/domain_settings_swipe_to_refresh_spinner"
                     android:layout_height="wrap_content"
                     android:layout_width="match_parent" />
             </LinearLayout>
 
             <TextView
-                android:id="@+id/domain_settings_display_webpage_images_textview"
+                android:id="@+id/domain_settings_swipe_to_refresh_textview"
                 android:layout_height="match_parent"
                 android:layout_width="match_parent"
                 android:layout_marginStart="45dp"
                 android:textSize="13sp" />
         </LinearLayout>
 
+        <!-- Display Images. -->
+        <LinearLayout
+            android:layout_height="wrap_content"
+            android:layout_width="match_parent"
+            android:orientation="vertical"
+            android:layout_marginTop="14dp"
+            android:layout_marginBottom="14dp" >
+
+            <LinearLayout
+                android:layout_height="wrap_content"
+                android:layout_width="match_parent"
+                android:orientation="horizontal" >
+
+                <ImageView
+                    android:id="@+id/domain_settings_display_webpage_images_imageview"
+                    android:layout_height="wrap_content"
+                    android:layout_width="wrap_content"
+                    android:layout_marginTop="1dp"
+                    android:layout_marginEnd="10dp"
+                    android:layout_gravity="center_vertical"
+                    android:contentDescription="@string/display_webpage_images" />
+
+                <Spinner
+                    android:id="@+id/domain_settings_display_webpage_images_spinner"
+                    android:layout_height="wrap_content"
+                    android:layout_width="match_parent" />
+            </LinearLayout>
+
+            <TextView
+                android:id="@+id/domain_settings_display_webpage_images_textview"
+                android:layout_height="match_parent"
+                android:layout_width="match_parent"
+                android:layout_marginStart="45dp"
+                android:layout_marginEnd="36dp"
+                android:textSize="13sp" />
+        </LinearLayout>
+
         <!-- Pinned SSL Certificate -->
         <LinearLayout
             android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/domain_settings_spinner_dropdown_item.xml b/app/src/main/res/layout/domain_settings_spinner_dropdown_item.xml
deleted file mode 100644 (file)
index 6d746b6..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-  Copyright © 2017 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/>. -->
-
-<CheckedTextView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/spinner_dropdown_item_textview"
-    android:layout_height="wrap_content"
-    android:layout_width="match_parent"
-    android:maxLines="1"
-    android:ellipsize="end"
-    android:gravity="center_vertical"
-    android:paddingStart="16dp"
-    android:paddingEnd="16dp"
-    android:paddingTop="8dp"
-    android:paddingBottom="8dp"
-    android:textSize="18sp"
-    android:checkMark="?android:attr/listChoiceIndicatorSingle" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/domain_settings_spinner_dropdown_items.xml b/app/src/main/res/layout/domain_settings_spinner_dropdown_items.xml
new file mode 100644 (file)
index 0000000..6d746b6
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  Copyright © 2017 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/>. -->
+
+<CheckedTextView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/spinner_dropdown_item_textview"
+    android:layout_height="wrap_content"
+    android:layout_width="match_parent"
+    android:maxLines="1"
+    android:ellipsize="end"
+    android:gravity="center_vertical"
+    android:paddingStart="16dp"
+    android:paddingEnd="16dp"
+    android:paddingTop="8dp"
+    android:paddingBottom="8dp"
+    android:textSize="18sp"
+    android:checkMark="?android:attr/listChoiceIndicatorSingle" />
\ No newline at end of file
index 72b9fd6..0a239ee 100644 (file)
     <item
         android:id="@+id/toggle_javascript"
         android:title="@string/javascript"
-        android:orderInCategory="10"
+        android:orderInCategory="100"
         app:showAsAction="ifRoom" />
 
     <item
         android:id="@+id/add_or_edit_domain"
         android:title="@string/add_domain_settings"
-        android:orderInCategory="20"
+        android:orderInCategory="200"
         app:showAsAction="never" />
 
     <item
         android:id="@+id/toggle_first_party_cookies"
         android:title="@string/first_party_cookies"
-        android:orderInCategory="30"
+        android:orderInCategory="300"
         android:checkable="true"
         app:showAsAction="never" />
 
     <item
         android:id="@+id/toggle_third_party_cookies"
         android:title="@string/third_party_cookies"
-        android:orderInCategory="40"
+        android:orderInCategory="400"
         android:checkable="true"
         app:showAsAction="never" />
 
     <item
         android:id="@+id/toggle_dom_storage"
         android:title="@string/dom_storage"
-        android:orderInCategory="50"
+        android:orderInCategory="500"
         android:checkable="true"
         app:showAsAction="never" />
 
     <item
         android:id="@+id/toggle_save_form_data"
         android:title="@string/form_data"
-        android:orderInCategory="60"
+        android:orderInCategory="600"
         android:checkable="true"
         app:showAsAction="never" />
 
     <item
         android:id="@+id/clear_data"
         android:title="@string/clear_data"
-        android:orderInCategory="70"
+        android:orderInCategory="700"
         app:showAsAction="never" >
 
         <menu>
             <item
                 android:id="@+id/clear_cookies"
                 android:title="@string/clear_cookies"
-                android:orderInCategory="71"
+                android:orderInCategory="710"
                 app:showAsAction="never" />
 
             <item
                 android:id="@+id/clear_dom_storage"
                 android:title="@string/clear_dom_storage"
-                android:orderInCategory="72"
+                android:orderInCategory="720"
                 app:showAsAction="never" />
 
             <item
                 android:id="@+id/clear_form_data"
                 android:title="@string/clear_form_data"
-                android:orderInCategory="73"
+                android:orderInCategory="730"
                 app:showAsAction="never" />
         </menu>
     </item>
 
     <item
-        android:id="@+id/font_size"
-        android:title="@string/font_size"
-        android:orderInCategory="80"
+        android:id="@+id/layout"
+        android:title="@string/layout"
+        android:orderInCategory="800"
         app:showAsAction="never" >
 
         <menu>
-            <group android:checkableBehavior="single">
-                <item
-                    android:id="@+id/font_size_twenty_five_percent"
-                    android:title="@string/twenty_five_percent"
-                    android:orderInCategory="81"
-                    app:showAsAction="never" />
-
-                <item
-                    android:id="@+id/font_size_fifty_percent"
-                    android:title="@string/fifty_percent"
-                    android:orderInCategory="82"
-                    app:showAsAction="never" />
-
-                <item
-                    android:id="@+id/font_size_seventy_five_percent"
-                    android:title="@string/seventy_five_percent"
-                    android:orderInCategory="83"
-                    app:showAsAction="never" />
-
-                <item
-                    android:id="@+id/font_size_one_hundred_percent"
-                    android:title="@string/one_hundred_percent"
-                    android:orderInCategory="84"
-                    app:showAsAction="never" />
-
-                <item
-                    android:id="@+id/font_size_one_hundred_twenty_five_percent"
-                    android:title="@string/one_hundred_twenty_five_percent"
-                    android:orderInCategory="85"
-                    app:showAsAction="never" />
-
-                <item
-                    android:id="@+id/font_size_one_hundred_fifty_percent"
-                    android:title="@string/one_hundred_fifty_percent"
-                    android:orderInCategory="86"
-                    app:showAsAction="never" />
-
-                <item
-                    android:id="@+id/font_size_one_hundred_seventy_five_percent"
-                    android:title="@string/one_hundred_seventy_five_percent"
-                    android:orderInCategory="87"
-                    app:showAsAction="never" />
-
-                <item
-                    android:id="@+id/font_size_two_hundred_percent"
-                    android:title="@string/two_hundred_percent"
-                    android:orderInCategory="88"
-                    app:showAsAction="never" />
-            </group>
+            <item
+                android:id="@+id/font_size"
+                android:title="@string/font_size"
+                android:orderInCategory="810"
+                app:showAsAction="never" >
+
+                <menu>
+                    <group android:checkableBehavior="single">
+                        <item
+                            android:id="@+id/font_size_twenty_five_percent"
+                            android:title="@string/twenty_five_percent"
+                            android:orderInCategory="811"
+                            app:showAsAction="never" />
+
+                        <item
+                            android:id="@+id/font_size_fifty_percent"
+                            android:title="@string/fifty_percent"
+                            android:orderInCategory="812"
+                            app:showAsAction="never" />
+
+                        <item
+                            android:id="@+id/font_size_seventy_five_percent"
+                            android:title="@string/seventy_five_percent"
+                            android:orderInCategory="813"
+                            app:showAsAction="never" />
+
+                        <item
+                            android:id="@+id/font_size_one_hundred_percent"
+                            android:title="@string/one_hundred_percent"
+                            android:orderInCategory="814"
+                            app:showAsAction="never" />
+
+                        <item
+                            android:id="@+id/font_size_one_hundred_twenty_five_percent"
+                            android:title="@string/one_hundred_twenty_five_percent"
+                            android:orderInCategory="815"
+                            app:showAsAction="never" />
+
+                        <item
+                            android:id="@+id/font_size_one_hundred_fifty_percent"
+                            android:title="@string/one_hundred_fifty_percent"
+                            android:orderInCategory="816"
+                            app:showAsAction="never" />
+
+                        <item
+                            android:id="@+id/font_size_one_hundred_seventy_five_percent"
+                            android:title="@string/one_hundred_seventy_five_percent"
+                            android:orderInCategory="817"
+                            app:showAsAction="never" />
+
+                        <item
+                            android:id="@+id/font_size_two_hundred_percent"
+                            android:title="@string/two_hundred_percent"
+                            android:orderInCategory="818"
+                            app:showAsAction="never" />
+                    </group>
+                </menu>
+            </item>
+
+            <item
+                android:id="@+id/swipe_to_refresh"
+                android:title="@string/swipe_to_refresh_options_menu"
+                android:orderInCategory="820"
+                android:checkable="true"
+                app:showAsAction="never" />
+
+            <item
+                android:id="@+id/display_images"
+                android:title="@string/display_images"
+                android:orderInCategory="830"
+                android:checkable="true"
+                app:showAsAction="never" />
+
+            <item
+                android:id="@+id/view_source"
+                android:title="@string/view_source"
+                android:orderInCategory="840"
+                app:showAsAction="never" />
         </menu>
     </item>
 
-    <item
-        android:id="@+id/display_images"
-        android:title="@string/display_images"
-        android:orderInCategory="90"
-        android:checkable="true"
-        app:showAsAction="never" />
-
     <item
         android:id="@+id/share"
         android:title="@string/share"
-        android:orderInCategory="100"
+        android:orderInCategory="900"
         app:showAsAction="never" />
 
     <item
         android:id="@+id/find_on_page"
         android:title="@string/find_on_page"
-        android:orderInCategory="110"
+        android:orderInCategory="1000"
         app:showAsAction="never|collapseActionView" />
     <item
         android:id="@+id/print"
         android:title="@string/print"
-        android:orderInCategory="120"
-        app:showAsAction="never" />
-
-    <item
-        android:id="@+id/view_source"
-        android:title="@string/view_source"
-        android:orderInCategory="130"
+        android:orderInCategory="1100"
         app:showAsAction="never" />
 
     <item
         android:id="@+id/add_to_homescreen"
         android:title="@string/add_to_home_screen"
-        android:orderInCategory="140"
+        android:orderInCategory="1200"
         app:showAsAction="never" />
 
     <item
         android:id="@+id/refresh"
         android:title="@string/refresh"
-        android:orderInCategory="150"
+        android:orderInCategory="1300"
         app:showAsAction="never" />
 
     <item
         android:id="@+id/ad_consent"
         android:title="@string/ad_consent"
-        android:orderInCategory="160"
+        android:orderInCategory="1400"
         app:showAsAction="never" />
 </menu>
\ No newline at end of file
index 7fe51aa..59abd86 100644 (file)
         <string name="clear_cookies">Cookies löschen</string>
         <string name="clear_dom_storage">DOM-Speicher löschen</string>
         <string name="clear_form_data">Formulardaten löschen</string>
-    <string name="font_size">Schriftgröße</string>
-        <string name="twenty_five_percent">25%</string>
-        <string name="fifty_percent">50%</string>
-        <string name="seventy_five_percent">75%</string>
-        <string name="one_hundred_percent">100%</string>
-        <string name="one_hundred_twenty_five_percent">125%</string>
-        <string name="one_hundred_fifty_percent">150%</string>
-        <string name="one_hundred_seventy_five_percent">175%</string>
-        <string name="two_hundred_percent">200%</string>
-    <string name="display_images">Bilder anzeigen</string>
+        <string name="font_size">Schriftgröße</string>
+            <string name="twenty_five_percent">25%</string>
+            <string name="fifty_percent">50%</string>
+            <string name="seventy_five_percent">75%</string>
+            <string name="one_hundred_percent">100%</string>
+            <string name="one_hundred_twenty_five_percent">125%</string>
+            <string name="one_hundred_fifty_percent">150%</string>
+            <string name="one_hundred_seventy_five_percent">175%</string>
+            <string name="two_hundred_percent">200%</string>
+        <string name="swipe_to_refresh_options_menu">Herunterziehen zum aktualisieren</string>
+        <string name="display_images">Bilder anzeigen</string>
+        <string name="view_source">Quelltext anzeigen</string>
     <string name="share">Teilen</string>
     <string name="find_on_page">Auf Seite finden</string>
     <string name="print">Drucken</string>
         <string name="privacy_browser_web_page">Privacy Browser-Website</string>
-    <string name="view_source">Quelltext anzeigen</string>
     <string name="add_to_home_screen">Zur Startseite hinzufügen</string>
     <string name="refresh">Aktualisieren</string>
 
 
     <!-- Bookmarks Contextual App Bar. -->
     <string name="one_selected">1 Ausgewählt</string>
-    <string name="selected">Ausgewählt</string>
+    <string name="selected">Ausgewählt</string>  <!--This is a plural adjective.-->
     <string name="move_up">Nach oben verschieben</string>
     <string name="move_down">Nach unten verschieben</string>
     <string name="edit">Bearbeiten</string>
     <string name="domain_name">Domainname</string>
     <string name="domain_deleted">Domain gelöscht</string>
     <string name="domain_name_instructions">*. kann als Wildcard-Subdomain verwendet werden (z.B. *.stoutner.com)</string>
-    <string-array name="display_webpage_images_array">
+    <string-array name="swipe_to_refresh_array">
         <item>Standardeinstellung</item>
-        <item>Grafiken aktiviert</item>
-        <item>Grafiken deaktiviert</item>
+        <item>Herunterziehen zum aktualisieren aktiviert</item>
+        <item>Herunterziehen zum aktualisieren deaktiviert</item>
     </string-array>
     <string-array name="night_mode_array">
         <item>Standardeinstellung</item>
         <item>Nachtmodus aktiviert</item>
         <item>Nachtmodus deaktiviert</item>
     </string-array>
+    <string-array name="display_webpage_images_array">
+        <item>Standardeinstellung</item>
+        <item>Grafiken aktiviert</item>
+        <item>Grafiken deaktiviert</item>
+    </string-array>
     <string name="pinned_ssl_certificate">SSL-Zertifikat verankern</string>
     <string name="saved_ssl_certificate">Gespeicherte SSL-Zertifikate</string>
     <string name="current_website_ssl_certificate">SSL-Zertifikat der aktuellen Webseite</string>
             <item>175%</item>
             <item>200%</item>
         </string-array>
-        <string name="swipe_to_refresh_enabled">Herunterziehen zum Aktualisieren</string>
-        <string name="swipe_to_refresh_enabled_summary">Einige Websites funktionieren nicht, wenn "Herunterziehen zum Aktualisieren" eingeschaltet ist.</string>
+        <string name="swipe_to_refresh_preference">Herunterziehen zum Aktualisieren</string>
+        <string name="swipe_to_refresh_summary">Einige Websites funktionieren nicht, wenn "Herunterziehen zum Aktualisieren" eingeschaltet ist.</string>
         <string name="display_additional_app_bar_icons">Weitere Icons in der Titelleiste</string>
         <string name="display_additional_app_bar_icons_summary">Icons zum Umschalten von Cookies, DOM-Speicher und Formulardaten neben der Adresszeile anzeigen, wenn noch Platz dafür da ist.</string>
 
index e3f0bcf..b997e80 100644 (file)
         <string name="clear_cookies">Borrar cookies</string>
         <string name="clear_dom_storage">Borrar almacenamiento DOM</string>
         <string name="clear_form_data">Borrar datos de formulario</string>
-    <string name="font_size">Tamaño de fuente</string>
-        <string name="twenty_five_percent">25%</string>
-        <string name="fifty_percent">50%</string>
-        <string name="seventy_five_percent">75%</string>
-        <string name="one_hundred_percent">100%</string>
-        <string name="one_hundred_twenty_five_percent">125%</string>
-        <string name="one_hundred_fifty_percent">150%</string>
-        <string name="one_hundred_seventy_five_percent">175%</string>
-        <string name="two_hundred_percent">200%</string>
-    <string name="display_images">Mostrar imágenes</string>
+        <string name="font_size">Tamaño de fuente</string>
+            <string name="twenty_five_percent">25%</string>
+            <string name="fifty_percent">50%</string>
+            <string name="seventy_five_percent">75%</string>
+            <string name="one_hundred_percent">100%</string>
+            <string name="one_hundred_twenty_five_percent">125%</string>
+            <string name="one_hundred_fifty_percent">150%</string>
+            <string name="one_hundred_seventy_five_percent">175%</string>
+            <string name="two_hundred_percent">200%</string>
+        <string name="swipe_to_refresh_options_menu">Deslizar para actualizar</string>
+        <string name="display_images">Mostrar imágenes</string>
+        <string name="view_source">Ver la fuente</string>
     <string name="share">Compartir</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>
-    <string name="view_source">Ver la fuente</string>
     <string name="add_to_home_screen">Añadir a la ventana de inicio</string>
     <string name="refresh">Actualizar</string>
 
 
     <!-- Bookmarks Contextual App Bar. -->
     <string name="one_selected">1 seleccionado</string>
-    <string name="selected">seleccionados</string>
+    <string name="selected">seleccionados</string>  <!--This is a plural adjective.-->
     <string name="move_up">Subir</string>
     <string name="move_down">Bajar</string>
     <string name="edit">Editar</string>
     <string name="domain_name">Nombre de dominio</string>
     <string name="domain_deleted">Dominio borrado</string>
     <string name="domain_name_instructions">*. puede ser añadido a un dominio para incluir todos los subdominios (p.ej. *.stoutner.com)</string>
-    <string-array name="display_webpage_images_array">
+    <string-array name="swipe_to_refresh_array">
         <item>Por defecto del sistema</item>
-        <item>Imágenes habilitadas</item>
-        <item>Imágenes deshabilitadas</item>
+        <item>Deslizar para actualizar habilitado</item>
+        <item>Deslizar para actualizar deshabilitado</item>
     </string-array>
     <string-array name="night_mode_array">
         <item>Por defecto del sistema</item>
         <item>Modo noche habilitado</item>
         <item>Modo noche deshabilitado</item>
     </string-array>
+    <string-array name="display_webpage_images_array">
+        <item>Por defecto del sistema</item>
+        <item>Imágenes habilitadas</item>
+        <item>Imágenes deshabilitadas</item>
+    </string-array>
     <string name="pinned_ssl_certificate">Certificado SSL fijado</string>
     <string name="saved_ssl_certificate">Certificado SSL guardado</string>
     <string name="current_website_ssl_certificate">Certificado SSL actual de la web</string>
                 <item>175%</item>
                 <item>200%</item>
             </string-array>
-        <string name="swipe_to_refresh_enabled">Deslizar para actualizar</string>
-        <string name="swipe_to_refresh_enabled_summary">Algunas webs no funcionan bien si la opción deslizar para actualizar está habilitada.</string>
+        <string name="swipe_to_refresh_preference">Deslizar para actualizar</string>
+        <string name="swipe_to_refresh_summary">Algunas webs no funcionan bien si la opción deslizar para actualizar está habilitada.</string>
         <string name="display_additional_app_bar_icons">Mostrar iconos adicionales en la barra de aplicación</string>
         <string name="display_additional_app_bar_icons_summary">Mostrar iconos para alternar entre cookies, almacenamiento DOM, y datos de formulario en la barra de aplicación, si hay espacio.</string>
         <string name="dark_theme">Tema oscuro</string>
index 4d08575..4748157 100644 (file)
         <string name="clear_cookies">Elimina cookies</string>
         <string name="clear_dom_storage">Elimina DOM storage</string>
         <string name="clear_form_data">Elimina dati dei moduli</string>
-    <string name="font_size">Dimensione font</string>
-        <string name="twenty_five_percent">25%</string>
-        <string name="fifty_percent">50%</string>
-        <string name="seventy_five_percent">75%</string>
-        <string name="one_hundred_percent">100%</string>
-        <string name="one_hundred_twenty_five_percent">125%</string>
-        <string name="one_hundred_fifty_percent">150%</string>
-        <string name="one_hundred_seventy_five_percent">175%</string>
-        <string name="two_hundred_percent">200%</string>
-    <string name="display_images">Mostra immagini</string>
+        <string name="font_size">Dimensione font</string>
+            <string name="twenty_five_percent">25%</string>
+            <string name="fifty_percent">50%</string>
+            <string name="seventy_five_percent">75%</string>
+            <string name="one_hundred_percent">100%</string>
+            <string name="one_hundred_twenty_five_percent">125%</string>
+            <string name="one_hundred_fifty_percent">150%</string>
+            <string name="one_hundred_seventy_five_percent">175%</string>
+            <string name="two_hundred_percent">200%</string>
+        <string name="swipe_to_refresh_options_menu">Swipe per aggiornare</string>
+        <string name="display_images">Mostra immagini</string>
+        <string name="view_source">Visualizza sorgente</string>
     <string name="share">Condividi</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>
-    <string name="view_source">Visualizza sorgente</string>
     <string name="add_to_home_screen">Aggiungi collegamento</string>
     <string name="refresh">Aggiorna</string>
 
 
     <!-- Bookmarks Contextual App Bar. -->
     <string name="one_selected">1 Selezionato</string>
-    <string name="selected">Selezionato</string>
+    <string name="selected">Selezionato</string>  <!--This is a plural adjective.-->
     <string name="move_up">Sposta sopra</string>
     <string name="move_down">Sposta sotto</string>
     <string name="edit">Modifica</string>
     <string name="domain_name">Nome del Dominio</string>
     <string name="domain_deleted">Dominio Eliminato</string>
     <string name="domain_name_instructions">è possibile anteporre *. a un dominio per includere tutti i sottodomini (es. *.stoutner.com)</string>
-    <string-array name="display_webpage_images_array">
+    <string-array name="swipe_to_refresh_array">
         <item>Impostazioni di default</item>
-        <item>Abilita Immagini</item>
-        <item>Disabilita Immagini</item>
+        <item>Swipe per aggiornare abilitata</item>
+        <item>Swipe per aggiornare disabilitata</item>
     </string-array>
     <string-array name="night_mode_array">
         <item>Impostazioni di default</item>
         <item>Modalità Notte abilitata</item>
         <item>Modalità Notte disabilitata</item>
     </string-array>
+    <string-array name="display_webpage_images_array">
+        <item>Impostazioni di default</item>
+        <item>Abilita Immagini</item>
+        <item>Disabilita Immagini</item>
+    </string-array>
     <string name="pinned_ssl_certificate">Certificato SSL appuntato</string>
     <string name="saved_ssl_certificate">Certificato SSL salvato</string>
     <string name="current_website_ssl_certificate">Certificato SSL di questo sito</string>
                 <item>175%</item>
                 <item>200%</item>
             </string-array>
-        <string name="swipe_to_refresh_enabled">Swipe per aggiornare</string>
-        <string name="swipe_to_refresh_enabled_summary">Alcuni siti non funzionano correttamente se questa opzione è abilitata.</string>
+        <string name="swipe_to_refresh_preference">Swipe per aggiornare</string>
+        <string name="swipe_to_refresh_summary">Alcuni siti non funzionano correttamente se questa opzione è abilitata.</string>
         <string name="display_additional_app_bar_icons">Mostra icone addizionali nella barra dell\'applicazione</string>
         <string name="display_additional_app_bar_icons_summary">Mostra le icone per l\'abilitazione dei cookies, del DOM storage,
             e dei dati dei moduli nella barra dell\'applicazione se c\'è spazio disponibile.</string>
index b1f3b20..5f0c473 100644 (file)
         <string name="clear_cookies">Очистить cookie</string>
         <string name="clear_dom_storage"> Очистить хранилище DOM</string>
         <string name="clear_form_data">Очистить данные формы</string>
-    <string name="font_size">Размер шрифта</string>
-        <string name="twenty_five_percent">25%</string>
-        <string name="fifty_percent">50%</string>
-        <string name="seventy_five_percent">75%</string>
-        <string name="one_hundred_percent">100%</string>
-        <string name="one_hundred_twenty_five_percent">125%</string>
-        <string name="one_hundred_fifty_percent">150%</string>
-        <string name="one_hundred_seventy_five_percent">175%</string>
-        <string name="two_hundred_percent">200%</string>
-    <string name="display_images">Показывать изображения</string>
+        <string name="font_size">Размер шрифта</string>
+            <string name="twenty_five_percent">25%</string>
+            <string name="fifty_percent">50%</string>
+            <string name="seventy_five_percent">75%</string>
+            <string name="one_hundred_percent">100%</string>
+            <string name="one_hundred_twenty_five_percent">125%</string>
+            <string name="one_hundred_fifty_percent">150%</string>
+            <string name="one_hundred_seventy_five_percent">175%</string>
+            <string name="two_hundred_percent">200%</string>
+        <string name="swipe_to_refresh_options_menu">Потянуть для обновления</string>
+        <string name="display_images">Показывать изображения</string>
+        <string name="view_source">Просмотр исходного кода</string>
     <string name="share">Поделиться</string>
     <string name="find_on_page">Найти на странице</string>
     <string name="print">Печать</string>
         <string name="privacy_browser_web_page">Privacy Browser веб-страница</string>
-    <string name="view_source">Просмотр исходного кода</string>
     <string name="add_to_home_screen">Добавить на домашний экран</string>
     <string name="refresh">Обновить</string>
 
     <string name="domain_name">Имя домена</string>
     <string name="domain_deleted">Домен удален</string>
     <string name="domain_name_instructions">добавьте *. для включения всех поддоменов (напр. * .yandex.ru)</string>
-    <string-array name="display_webpage_images_array">
+    <string-array name="swipe_to_refresh_array">
         <item>Настройки по умолчанию</item>
-        <item>Ð\98зобÑ\80ажениÑ\8f Ð²ÐºÐ»Ñ\8eÑ\87енÑ\8b</item>
-        <item>Ð\98зобÑ\80ажениÑ\8f Ð²Ñ\8bклÑ\8eÑ\87енÑ\8b</item>
+        <item>Ð\9fоÑ\82Ñ\8fнÑ\83Ñ\82Ñ\8c Ð´Ð»Ñ\8f Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ\8f enabled</item>
+        <item>Ð\9fоÑ\82Ñ\8fнÑ\83Ñ\82Ñ\8c Ð´Ð»Ñ\8f Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ\8f disabled</item>
     </string-array>
     <string-array name="night_mode_array">
         <item>Настройки по умолчанию</item>
         <item>Ночной режим включен</item>
         <item>Ночной режим выключен</item>
     </string-array>
+    <string-array name="display_webpage_images_array">
+        <item>Настройки по умолчанию</item>
+        <item>Изображения включены</item>
+        <item>Изображения выключены</item>
+    </string-array>
     <string name="pinned_ssl_certificate">Закрепленный сертификат SSL</string>
     <string name="saved_ssl_certificate">Сохраненный сертификат SSL</string>
     <string name="current_website_ssl_certificate">Текущий сертификат SSL сайта</string>
                 <item>175%</item>
                 <item>200%</item>
             </string-array>
-        <string name="swipe_to_refresh_enabled">Потянуть для обновления</string>
-        <string name="swipe_to_refresh_enabled_summary">Некоторые веб-сайты могут работать некорректно при включении данной опции.</string>
+        <string name="swipe_to_refresh_preference">Потянуть для обновления</string>
+        <string name="swipe_to_refresh_summary">Некоторые веб-сайты могут работать некорректно при включении данной опции.</string>
         <string name="display_additional_app_bar_icons">Отображать дополнительные значки на панели приложения</string>
         <string name="display_additional_app_bar_icons_summary">Отображение значков для переключения файлов cookie, хранилища DOM и данных формы на панели приложения при наличии места.</string>
         <string name="dark_theme">Темная тема</string>
index 235f9be..f77ab2d 100644 (file)
         <string name="clear_cookies">Clear Cookies</string>
         <string name="clear_dom_storage">Clear DOM Storage</string>
         <string name="clear_form_data">Clear Form Data</string>
-    <string name="font_size">Font Size</string>
-        <string name="twenty_five_percent">25%</string>
-        <string name="fifty_percent">50%</string>
-        <string name="seventy_five_percent">75%</string>
-        <string name="one_hundred_percent">100%</string>
-        <string name="one_hundred_twenty_five_percent">125%</string>
-        <string name="one_hundred_fifty_percent">150%</string>
-        <string name="one_hundred_seventy_five_percent">175%</string>
-        <string name="two_hundred_percent">200%</string>
-    <string name="display_images">Display Images</string>
+    <string name="layout">Layout</string>
+        <string name="font_size">Font Size</string>
+            <string name="twenty_five_percent">25%</string>
+            <string name="fifty_percent">50%</string>
+            <string name="seventy_five_percent">75%</string>
+            <string name="one_hundred_percent">100%</string>
+            <string name="one_hundred_twenty_five_percent">125%</string>
+            <string name="one_hundred_fifty_percent">150%</string>
+            <string name="one_hundred_seventy_five_percent">175%</string>
+            <string name="two_hundred_percent">200%</string>
+        <string name="swipe_to_refresh_options_menu">Swipe to Refresh</string>
+        <string name="display_images">Display Images</string>
+        <string name="view_source">View Source</string>
     <string name="share">Share</string>
     <string name="find_on_page">Find on Page</string>
     <string name="print">Print</string>
         <string name="privacy_browser_web_page">Privacy Browser Web Page</string>
-    <string name="view_source">View Source</string>
     <string name="add_to_home_screen">Add to Home Screen</string>
     <string name="refresh">Refresh</string>
 
     <string name="domain_name">Domain name</string>
     <string name="domain_deleted">Domain deleted</string>
     <string name="domain_name_instructions">*. may be prepended to a domain to include all subdomains (eg. *.stoutner.com)</string>
-    <string-array name="display_webpage_images_array">
+    <string-array name="swipe_to_refresh_array">
         <item>System default</item>
-        <item>Images enabled</item>
-        <item>Images disabled</item>
+        <item>Swipe to refresh enabled</item>
+        <item>Swipe to refresh disabled</item>
     </string-array>
     <string-array name="night_mode_array">
         <item>System default</item>
         <item>Night mode enabled</item>
         <item>Night mode disabled</item>
     </string-array>
+    <string-array name="display_webpage_images_array">
+        <item>System default</item>
+        <item>Images enabled</item>
+        <item>Images disabled</item>
+    </string-array>
     <string name="pinned_ssl_certificate">Pinned SSL certificate</string>
     <string name="saved_ssl_certificate">Saved SSL certificate</string>
     <string name="current_website_ssl_certificate">Current website SSL certificate</string>
                 <item>175</item>
                 <item>200</item>
             </string-array>
-        <string name="swipe_to_refresh_enabled">Swipe to refresh</string>
-        <string name="swipe_to_refresh_enabled_summary">Some websites don’t work well if swipe to refresh is enabled.</string>
+        <string name="swipe_to_refresh_preference">Swipe to refresh</string>
+        <string name="swipe_to_refresh_summary">Some websites don’t work well if swipe to refresh is enabled.</string>
         <string name="display_additional_app_bar_icons">Display additional app bar icons</string>
         <string name="display_additional_app_bar_icons_summary">Display icons for toggling cookies, DOM storage, and form data in the app bar if there is room.</string>
         <string name="dark_theme">Dark theme</string>
index f4dcff2..0348df7 100644 (file)
 
         <SwitchPreference
             android:key="swipe_to_refresh"
-            android:title="@string/swipe_to_refresh_enabled"
-            android:summary="@string/swipe_to_refresh_enabled_summary"
-            android:defaultValue="false" />
+            android:title="@string/swipe_to_refresh_preference"
+            android:summary="@string/swipe_to_refresh_summary"
+            android:defaultValue="true" />
 
         <SwitchPreference
             android:key="display_additional_app_bar_icons"