Ver código fonte

Merge pull request #8543 from nextcloud/darkNcText

Respect dark mode for Web Text Editor
Tobias Kaminsky 3 anos atrás
pai
commit
bf2685d247

+ 1 - 0
build.gradle

@@ -279,6 +279,7 @@ dependencies {
     implementation 'com.google.android.material:material:1.3.0'
     implementation 'com.jakewharton:disklrucache:2.0.2'
     implementation 'androidx.appcompat:appcompat:1.3.0'
+    implementation 'androidx.webkit:webkit:1.4.0'
     implementation 'androidx.cardview:cardview:1.0.0'
     implementation 'androidx.exifinterface:exifinterface:1.3.2'
     implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1"

+ 13 - 0
src/main/java/com/owncloud/android/ui/activity/TextEditorWebView.kt

@@ -25,11 +25,14 @@ import android.annotation.SuppressLint
 import android.net.Uri
 import android.os.Bundle
 import android.widget.Toast
+import androidx.webkit.WebSettingsCompat
+import androidx.webkit.WebViewFeature
 import com.nextcloud.client.appinfo.AppInfo
 import com.nextcloud.client.device.DeviceInfo
 import com.owncloud.android.R
 import com.owncloud.android.files.FileMenuFilter
 import com.owncloud.android.ui.asynctasks.TextEditorLoadUrlTask
+import com.owncloud.android.utils.theme.ThemeUtils
 import javax.inject.Inject
 
 class TextEditorWebView : EditorWebView() {
@@ -55,6 +58,16 @@ class TextEditorWebView : EditorWebView() {
 
         webview.addJavascriptInterface(MobileInterface(), "DirectEditingMobileInterface")
 
+        if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK_STRATEGY)) {
+            WebSettingsCompat.setForceDarkStrategy(
+                webview.settings,
+                WebSettingsCompat.DARK_STRATEGY_WEB_THEME_DARKENING_ONLY
+            )
+        }
+        if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK) && ThemeUtils.isDarkModeActive(this)) {
+            WebSettingsCompat.setForceDark(webview.settings, WebSettingsCompat.FORCE_DARK_ON)
+        }
+
         webview.setDownloadListener { url, _, _, _, _ -> downloadFile(Uri.parse(url)) }
 
         loadUrl(intent.getStringExtra(ExternalSiteWebView.EXTRA_URL))