Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e7722f3f authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Update status bar icon colours..." into main

parents 016b329c 5c9fabbd
Loading
Loading
Loading
Loading
+38 −0
Original line number Diff line number Diff line
@@ -17,12 +17,16 @@
package com.android.wm.shell.desktopmode

import android.app.TaskInfo
import android.app.WallpaperColors
import android.app.WallpaperManager
import android.content.ComponentName
import android.os.Bundle
import android.util.Log
import android.view.WindowManager
import android.window.DesktopExperienceFlags
import androidx.activity.addCallback
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsControllerCompat
import androidx.fragment.app.FragmentActivity

/**
@@ -36,6 +40,13 @@ import androidx.fragment.app.FragmentActivity
 */
class DesktopWallpaperActivity : FragmentActivity() {

    private var wallpaperManager: WallpaperManager? = null

    private val wallpaperColorsListener =
        WallpaperManager.OnColorsChangedListener { colors, which ->
            updateStatusBarIconColors(colors)
        }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        Log.d(TAG, "onCreate")
@@ -55,6 +66,20 @@ class DesktopWallpaperActivity : FragmentActivity() {
        ) {
            onBackPressedDispatcher.addCallback(this) { moveTaskToBack(true) }
        }

        // Handle wallpaper color changes
        wallpaperManager = getSystemService(WallpaperManager::class.java)
        wallpaperManager?.addOnColorsChangedListener(wallpaperColorsListener, mainThreadHandler)

        // Set the initial color of status bar icons on activity creation.
        updateStatusBarIconColors(
            wallpaperManager?.getWallpaperColors(WallpaperManager.FLAG_SYSTEM)
        )
    }

    override fun onDestroy() {
        super.onDestroy()
        wallpaperManager?.removeOnColorsChangedListener(wallpaperColorsListener)
    }

    override fun onTopResumedActivityChanged(isTopResumedActivity: Boolean) {
@@ -73,6 +98,19 @@ class DesktopWallpaperActivity : FragmentActivity() {
        }
    }

    /** Set the status bar icon colours depending on wallpaper hint. */
    private fun updateStatusBarIconColors(wallpaperColors: WallpaperColors?) {
        wallpaperColors?.colorHints?.let {
            getWindowInsetsController().isAppearanceLightStatusBars =
                (it and WallpaperColors.HINT_SUPPORTS_DARK_TEXT) != 0
        }
    }

    private fun getWindowInsetsController(): WindowInsetsControllerCompat {
        val window = getWindow()
        return WindowCompat.getInsetsController(window, window.decorView)
    }

    companion object {
        private const val TAG = "DesktopWallpaperActivity"
        private const val SYSTEM_UI_PACKAGE_NAME = "com.android.systemui"