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

Commit 512ce6c9 authored by Lucas Dupin's avatar Lucas Dupin
Browse files

Support dark text on Recents

Test: visual. Set light and dark wallpapers
Change-Id: I100c7d6dac066168636b1741ed1ed7fc309988ef
Fixes: 63080632
parent ae885416
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -23,7 +23,8 @@
    android:drawableTop="@drawable/recents_empty"
    android:drawablePadding="25dp"
    android:textSize="16sp"
    android:textColor="#ffffffff"
    android:drawableTint="?attr/bgProtectTextColor"
    android:textColor="?attr/bgProtectTextColor"
    android:text="@string/recents_empty_message"
    android:fontFamily="sans-serif"
    android:visibility="gone" />
 No newline at end of file
+1 −1
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@
    android:paddingBottom="12dp"
    android:text="@string/recents_stack_action_button_label"
    android:textSize="14sp"
    android:textColor="#FFFFFF"
    android:textColor="?attr/bgProtectTextColor"
    android:textAllCaps="true"
    android:shadowColor="#99000000"
    android:shadowDx="0"
+11 −1
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@

<resources xmlns:android="http://schemas.android.com/apk/res/android">

    <style name="RecentsTheme" parent="@android:style/Theme.Material">
    <style name="RecentsTheme" parent="RecentsBase">
        <!-- NoTitle -->
        <item name="android:windowNoTitle">true</item>
        <!-- Misc -->
@@ -27,6 +27,12 @@
        <item name="android:ambientShadowAlpha">0.35</item>
    </style>

    <!-- OverlayManager might replace this style entirely, use RecentsTheme to set a property
    that should exist in both light and dark versions of Recents -->
    <style name="RecentsBase" parent="@android:style/Theme.Material">
        <item name="android:textColorPrimaryInverse">@*android:color/primary_text_material_dark</item>
        <item name="android:textColorSecondaryInverse">@*android:color/secondary_text_material_dark</item>
    </style>

    <!-- Recents theme -->
    <style name="RecentsTheme.Wallpaper">
@@ -35,6 +41,8 @@
        <item name="android:windowShowWallpaper">true</item>
        <item name="android:windowDisablePreview">true</item>
        <item name="clearAllStyle">@style/ClearAllButtonDefaultMargins</item>
        <item name="bgProtectTextColor">?android:attr/textColorPrimaryInverse</item>
        <item name="bgProtectSecondaryTextColor">?android:attr/textColorSecondaryInverse</item>
    </style>

    <style name="ClearAllButtonDefaultMargins">
@@ -47,6 +55,8 @@
    <!-- Performance optimized Recents theme (no wallpaper) -->
    <style name="RecentsTheme.NoWallpaper">
        <item name="android:windowBackground">@android:color/black</item>
        <item name="bgProtectTextColor">@android:color/white</item>
        <item name="bgProtectSecondaryTextColor">@android:color/white</item>
    </style>

    <!-- Theme used for the activity that shows when the system forced an app to be resizable -->
+13 −13
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.net.Uri;
import android.os.Bundle;
@@ -42,9 +43,9 @@ import android.view.WindowManager.LayoutParams;

import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.keyguard.LatencyTracker;
import com.android.systemui.DejankUtils;
import com.android.systemui.Interpolators;
import com.android.keyguard.LatencyTracker;
import com.android.systemui.R;
import com.android.systemui.recents.events.EventBus;
import com.android.systemui.recents.events.activity.CancelEnterRecentsWindowAnimationEvent;
@@ -110,11 +111,10 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD
    private RecentsPackageMonitor mPackageMonitor;
    private Handler mHandler = new Handler();
    private long mLastTabKeyEventTime;
    private int mLastDeviceOrientation = Configuration.ORIENTATION_UNDEFINED;
    private int mLastDisplayDensity;
    private boolean mFinishedOnStartup;
    private boolean mIgnoreAltTabRelease;
    private boolean mIsVisible;
    private Configuration mLastConfig;

    // Top level views
    private RecentsView mRecentsView;
@@ -333,16 +333,11 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD
        setContentView(R.layout.recents);
        takeKeyEvents(true);
        mRecentsView = findViewById(R.id.recents_view);
        mRecentsView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
                View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
                View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
        mScrimViews = new SystemBarScrimViews(this);
        getWindow().getAttributes().privateFlags |=
                WindowManager.LayoutParams.PRIVATE_FLAG_FORCE_DECOR_VIEW_VISIBILITY;

        Configuration appConfiguration = Utilities.getAppConfiguration(this);
        mLastDeviceOrientation = appConfiguration.orientation;
        mLastDisplayDensity = appConfiguration.densityDpi;
        mLastConfig = Utilities.getAppConfiguration(this);
        mFocusTimerDuration = getResources().getInteger(R.integer.recents_auto_advance_duration);
        mIterateTrigger = new DozeTrigger(mFocusTimerDuration, new Runnable() {
            @Override
@@ -485,10 +480,15 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD
        Configuration newDeviceConfiguration = Utilities.getAppConfiguration(this);
        int numStackTasks = mRecentsView.getStack().getStackTaskCount();
        EventBus.getDefault().send(new ConfigurationChangedEvent(false /* fromMultiWindow */,
                mLastDeviceOrientation != newDeviceConfiguration.orientation,
                mLastDisplayDensity != newDeviceConfiguration.densityDpi, numStackTasks > 0));
        mLastDeviceOrientation = newDeviceConfiguration.orientation;
        mLastDisplayDensity = newDeviceConfiguration.densityDpi;
                mLastConfig.orientation != newDeviceConfiguration.orientation,
                mLastConfig.densityDpi != newDeviceConfiguration.densityDpi, numStackTasks > 0));

        int configDiff = mLastConfig.updateFrom(newDeviceConfiguration);

        // Recreate activity if an overlay was enabled/disabled
        if ((configDiff & ActivityInfo.CONFIG_ASSETS_PATHS) != 0) {
            recreate();
        }
    }

    @Override
+19 −2
Original line number Diff line number Diff line
@@ -151,6 +151,12 @@ public class RecentsView extends FrameLayout implements ColorExtractor.OnColorsC
        mColorExtractor = Dependency.get(SysuiColorExtractor.class);

        LayoutInflater inflater = LayoutInflater.from(context);

        mEmptyView = (TextView) inflater.inflate(R.layout.recents_empty, this, false);
        addView(mEmptyView);

        boolean usingDarkText =
                Color.luminance(mEmptyView.getTextColors().getDefaultColor()) < 0.5f;
        if (RecentsDebugFlags.Static.EnableStackActionButton) {
            mStackActionButton = (TextView) inflater.inflate(R.layout.recents_stack_action_button,
                    this, false);
@@ -160,10 +166,21 @@ public class RecentsView extends FrameLayout implements ColorExtractor.OnColorsC
                    EventBus.getDefault().send(new DismissAllTaskViewsEvent());
                }
            });
            // Disable black shadow if text color is already dark.
            if (usingDarkText) {
                mStackActionButton.setShadowLayer(0, 0, 0, 0);
            }
            addView(mStackActionButton);
        }
        mEmptyView = (TextView) inflater.inflate(R.layout.recents_empty, this, false);
        addView(mEmptyView);

        // Let's also require dark status and nav bars if the text is dark
        int systemBarsStyle = usingDarkText ? View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR |
                View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR : 0;

        setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
                View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
                View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
                systemBarsStyle);
    }

    /**
Loading