<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>
<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).
<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).
<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).
<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).
<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).
<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).
<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).
<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).
<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>Позволяет рекламе узнавать наличие подключения к интернету (возможно, таким образом предотвращаются попытки загрузки рекламы при отсутствии активного соединения).
<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>Позволяет рекламе узнавать наличие подключения к интернету (возможно, таким образом предотвращаются попытки загрузки рекламы при отсутствии активного соединения).
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
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);
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();
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;
// 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);
}
}
// `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()`.
// `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;
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);
}
}
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.
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.
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"));
// 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`.
}
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;
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);
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();
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();
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.
waitingForOrbot = false;
}
- // Set swipe to refresh.
- swipeRefreshLayout.setEnabled(swipeToRefreshEnabled);
-
// Set Do Not Track status.
if (doNotTrackEnabled) {
customHeaders.put("DNT", "1");
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.
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));
}
}
+ // 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();
}
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;
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);
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);
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));
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);
// 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 {
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.
}
}
} 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);
}
}
}
- // 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();
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.
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.
}
}
- // Show `nightModeTextView`.
+ // Show night mode TextView.
nightModeTextView.setVisibility(View.VISIBLE);
break;
nightModeImageView.setImageDrawable(resources.getDrawable(R.drawable.night_mode_enabled_light));
}
- // Hide `nightModeTextView`.
+ // Hide the night mode TextView.
nightModeTextView.setVisibility(View.GONE);
break;
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.
}
});
- // 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);
}
}
}
}
- // Show `nightModeTextView`.
+ // Show the night mode TextView.
nightModeTextView.setVisibility(View.VISIBLE);
break;
// 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) -> {
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.
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&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.
}
// 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);
}
}
}
- } 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);
}
}
- // Set the `clearEverythingPreference` icon.
+ // Set the clear everything preference icon.
if (clearEverything) {
if (MainWebViewActivity.darkTheme) {
clearEverythingPreference.setIcon(R.drawable.clear_everything_enabled_dark);
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);
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);
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);
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);
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 {
}
}
- // 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);
}
}
- // 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);
}
}
- // 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);
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 {
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";
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";
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.
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, " +
// 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.
} 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");
}
}
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();
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();
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.
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) {
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);
</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"
+++ /dev/null
-<?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
--- /dev/null
+<?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
<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
<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>
<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>
<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>
<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>
<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>
<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"