mirror of
https://github.com/M66B/FairEmail.git
synced 2025-03-15 08:29:24 +00:00
Algorithmic darkening
This commit is contained in:
parent
46bf44fe03
commit
183196d00f
6 changed files with 22 additions and 44 deletions
|
@ -23,7 +23,7 @@ android {
|
|||
defaultConfig {
|
||||
applicationId "eu.faircode.email"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 32
|
||||
targetSdkVersion 33
|
||||
versionCode getVersionCode()
|
||||
versionName "1." + getVersionCode()
|
||||
archivesBaseName = "FairEmail-v$versionName" + getRevision()
|
||||
|
@ -332,7 +332,7 @@ dependencies {
|
|||
def activity_version = "1.5.0-rc01" // 1.6.0-alpha03
|
||||
def fragment_version = "1.5.0-rc01"
|
||||
def windows_version = "1.0.0" // 1.1.0-alpha01
|
||||
def webkit_version = "1.4.0"
|
||||
def webkit_version = "1.5.0-alpha01"
|
||||
def recyclerview_version = "1.2.1" // 1.3.0-alpha02
|
||||
def coordinatorlayout_version = "1.2.0"
|
||||
def constraintlayout_version = "2.1.4" // 2.2.0-alpha01
|
||||
|
|
|
@ -19,15 +19,11 @@ package eu.faircode.email;
|
|||
Copyright 2018-2022 by Marcel Bokhorst (M66B)
|
||||
*/
|
||||
|
||||
import static androidx.webkit.WebSettingsCompat.FORCE_DARK_OFF;
|
||||
import static androidx.webkit.WebSettingsCompat.FORCE_DARK_ON;
|
||||
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
|
@ -130,11 +126,10 @@ public class ActivityAMP extends ActivityBase {
|
|||
|
||||
@Override
|
||||
public boolean onPrepareOptionsMenu(Menu menu) {
|
||||
boolean available =
|
||||
(WebViewEx.isFeatureSupported(WebViewFeature.FORCE_DARK) &&
|
||||
Helper.isDarkTheme(this));
|
||||
boolean dark = Helper.isDarkTheme(this);
|
||||
boolean canDarken = WebViewEx.isFeatureSupported(WebViewFeature.ALGORITHMIC_DARKENING);
|
||||
menu.findItem(R.id.menu_force_light)
|
||||
.setVisible(available)
|
||||
.setVisible(dark && canDarken)
|
||||
.getIcon().setLevel(force_light ? 1 : 0);
|
||||
return super.onPrepareOptionsMenu(menu);
|
||||
}
|
||||
|
@ -165,12 +160,9 @@ public class ActivityAMP extends ActivityBase {
|
|||
private void setDarkMode() {
|
||||
WebSettings settings = wvAmp.getSettings();
|
||||
boolean dark = (Helper.isDarkTheme(this) && !force_light);
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU ||
|
||||
Helper.getTargetSdk(this) < Build.VERSION_CODES.TIRAMISU) {
|
||||
if (WebViewEx.isFeatureSupported(WebViewFeature.FORCE_DARK))
|
||||
WebSettingsCompat.setForceDark(settings, dark ? FORCE_DARK_ON : FORCE_DARK_OFF);
|
||||
} else
|
||||
settings.setAlgorithmicDarkeningAllowed(dark);
|
||||
boolean canDarken = WebViewEx.isFeatureSupported(WebViewFeature.ALGORITHMIC_DARKENING);
|
||||
if (canDarken)
|
||||
WebSettingsCompat.setAlgorithmicDarkeningAllowed(settings, dark);
|
||||
}
|
||||
|
||||
private void load() {
|
||||
|
|
|
@ -4868,8 +4868,8 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
|||
});
|
||||
|
||||
boolean isDark = Helper.isDarkTheme(context);
|
||||
boolean canDark = WebViewEx.isFeatureSupported(WebViewFeature.FORCE_DARK);
|
||||
tvDark.setVisibility(isDark && !canDark ? View.VISIBLE : View.GONE);
|
||||
boolean canDarken = WebViewEx.isFeatureSupported(WebViewFeature.ALGORITHMIC_DARKENING);
|
||||
tvDark.setVisibility(isDark && !canDarken ? View.VISIBLE : View.GONE);
|
||||
} else {
|
||||
boolean disable_tracking = prefs.getBoolean("disable_tracking", true);
|
||||
|
||||
|
|
|
@ -20,12 +20,9 @@ package eu.faircode.email;
|
|||
*/
|
||||
|
||||
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
|
||||
import static androidx.webkit.WebSettingsCompat.FORCE_DARK_OFF;
|
||||
import static androidx.webkit.WebSettingsCompat.FORCE_DARK_ON;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
@ -86,12 +83,9 @@ public class FragmentDialogOpenFull extends FragmentDialogBase {
|
|||
WebSettingsCompat.setSafeBrowsingEnabled(settings, safe_browsing);
|
||||
|
||||
boolean dark = (Helper.isDarkTheme(context) && !force_light);
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU ||
|
||||
Helper.getTargetSdk(context) < Build.VERSION_CODES.TIRAMISU) {
|
||||
if (WebViewEx.isFeatureSupported(WebViewFeature.FORCE_DARK))
|
||||
WebSettingsCompat.setForceDark(settings, dark ? FORCE_DARK_ON : FORCE_DARK_OFF);
|
||||
} else
|
||||
settings.setAlgorithmicDarkeningAllowed(dark);
|
||||
boolean canDarken = WebViewEx.isFeatureSupported(WebViewFeature.ALGORITHMIC_DARKENING);
|
||||
if (canDarken)
|
||||
WebSettingsCompat.setAlgorithmicDarkeningAllowed(settings, dark);
|
||||
|
||||
settings.setLoadsImagesAutomatically(true);
|
||||
settings.setBlockNetworkLoads(false);
|
||||
|
|
|
@ -1985,8 +1985,8 @@ public class Log {
|
|||
sb.append(String.format("UI type: %s %s\r\n", uiType,
|
||||
"normal".equals(uiType) ? "" : "!!!"));
|
||||
|
||||
sb.append(String.format("Force dark support: %b\r\n",
|
||||
WebViewEx.isFeatureSupported(WebViewFeature.FORCE_DARK)));
|
||||
sb.append(String.format("Darken support: %b\r\n",
|
||||
WebViewEx.isFeatureSupported(WebViewFeature.ALGORITHMIC_DARKENING)));
|
||||
|
||||
sb.append("\r\n");
|
||||
|
||||
|
|
|
@ -19,9 +19,6 @@ package eu.faircode.email;
|
|||
Copyright 2018-2022 by Marcel Bokhorst (M66B)
|
||||
*/
|
||||
|
||||
import static androidx.webkit.WebSettingsCompat.FORCE_DARK_OFF;
|
||||
import static androidx.webkit.WebSettingsCompat.FORCE_DARK_ON;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Configuration;
|
||||
|
@ -118,18 +115,13 @@ public class WebViewEx extends WebView implements DownloadListener, View.OnLongC
|
|||
WebSettings settings = getSettings();
|
||||
|
||||
boolean dark = Helper.isDarkTheme(context);
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU ||
|
||||
Helper.getTargetSdk(context) < Build.VERSION_CODES.TIRAMISU) {
|
||||
boolean canForce = WebViewEx.isFeatureSupported(WebViewFeature.FORCE_DARK);
|
||||
if (canForce)
|
||||
WebSettingsCompat.setForceDark(settings, dark && !force_light ? FORCE_DARK_ON : FORCE_DARK_OFF);
|
||||
setBackgroundColor(canForce && force_light ? Color.WHITE : Color.TRANSPARENT);
|
||||
} else {
|
||||
// https://developer.android.com/reference/android/webkit/WebSettings#setAlgorithmicDarkeningAllowed(boolean)
|
||||
// https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme
|
||||
settings.setAlgorithmicDarkeningAllowed(dark && !force_light);
|
||||
setBackgroundColor(force_light ? Color.WHITE : Color.TRANSPARENT);
|
||||
}
|
||||
|
||||
// https://developer.android.com/reference/android/webkit/WebSettings#setAlgorithmicDarkeningAllowed(boolean)
|
||||
// https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme
|
||||
boolean canDarken = WebViewEx.isFeatureSupported(WebViewFeature.ALGORITHMIC_DARKENING);
|
||||
if (canDarken)
|
||||
WebSettingsCompat.setAlgorithmicDarkeningAllowed(settings, dark && !force_light);
|
||||
setBackgroundColor(canDarken && force_light ? Color.WHITE : Color.TRANSPARENT);
|
||||
|
||||
float fontSize = 16f /* Default */ *
|
||||
(browser_zoom ? 1f : message_zoom / 100f);
|
||||
|
|
Loading…
Add table
Reference in a new issue