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

Commit 5a7d9a84 authored by Darrell Shi's avatar Darrell Shi
Browse files

Show only enabled complications on dream overlay.

Test: atest DreamOverlayServiceTest#testSetAvailableComplicationTypes
Test: atest ComplicationUtilsTest
Fix: 214039870
Change-Id: I449a718f095e206749333d4519311807de107cf2
parent 24c7b811
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -31,8 +31,10 @@ import androidx.lifecycle.ViewModelStore;
import com.android.internal.policy.PhoneWindow;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.settingslib.dream.DreamBackend;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dreams.complication.Complication;
import com.android.systemui.dreams.complication.ComplicationUtils;
import com.android.systemui.dreams.dagger.DreamOverlayComponent;
import com.android.systemui.dreams.touch.DreamOverlayTouchMonitor;

@@ -57,6 +59,7 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ
    // content area).
    private final DreamOverlayContainerViewController mDreamOverlayContainerViewController;
    private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    private final DreamBackend mDreamBackend;

    // A reference to the {@link Window} used to hold the dream overlay.
    private Window mWindow;
@@ -109,6 +112,7 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ
        setCurrentState(Lifecycle.State.CREATED);
        mLifecycleRegistry = component.getLifecycleRegistry();
        mDreamOverlayTouchMonitor = component.getDreamOverlayTouchMonitor();
        mDreamBackend = component.getDreamBackend();
        mDreamOverlayTouchMonitor.init();
    }

@@ -130,6 +134,9 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ
    public void onStartDream(@NonNull WindowManager.LayoutParams layoutParams) {
        setCurrentState(Lifecycle.State.STARTED);
        mExecutor.execute(() -> {
            mStateController.setAvailableComplicationTypes(
                    ComplicationUtils.convertComplicationTypes(
                            mDreamBackend.getEnabledComplications()));
            addOverlayWindowLocked(layoutParams);
            setCurrentState(Lifecycle.State.RESUMED);
            mStateController.setOverlayActive(true);
+1 −3
Original line number Diff line number Diff line
@@ -131,9 +131,7 @@ public class DreamOverlayStateController implements
                .filter(complication -> {
                    @Complication.ComplicationType
                    final int requiredTypes = complication.getRequiredTypeAvailability();

                    return requiredTypes == Complication.COMPLICATION_TYPE_NONE
                            || (requiredTypes & getAvailableComplicationTypes()) == requiredTypes;
                    return (requiredTypes & getAvailableComplicationTypes()) == requiredTypes;
                })
                .collect(Collectors.toCollection(HashSet::new))
                : mComplications);
+12 −0
Original line number Diff line number Diff line
@@ -25,6 +25,8 @@ import static com.android.systemui.dreams.complication.Complication.COMPLICATION

import com.android.settingslib.dream.DreamBackend;

import java.util.Set;

/**
 * A collection of utility methods for working with {@link Complication}.
 */
@@ -50,4 +52,14 @@ public class ComplicationUtils {
                return COMPLICATION_TYPE_NONE;
        }
    }

    /**
     * Converts a set of {@link com.android.settingslib.dream.DreamBackend.ComplicationType} to
     * a combined complications types state.
     */
    @Complication.ComplicationType
    public static int convertComplicationTypes(@DreamBackend.ComplicationType Set<Integer> types) {
        return types.stream().mapToInt(ComplicationUtils::convertComplicationType).reduce(
                COMPLICATION_TYPE_NONE, (a, b) -> a | b);
    }
}
+5 −0
Original line number Diff line number Diff line
@@ -44,6 +44,11 @@ public class DreamClockDateComplication implements Complication {
        mComponentFactory = componentFactory;
    }

    @Override
    public int getRequiredTypeAvailability() {
        return COMPLICATION_TYPE_DATE;
    }

    /**
     * Create {@link DreamClockDateViewHolder}.
     */
+5 −0
Original line number Diff line number Diff line
@@ -44,6 +44,11 @@ public class DreamClockTimeComplication implements Complication {
        mComponentFactory = componentFactory;
    }

    @Override
    public int getRequiredTypeAvailability() {
        return COMPLICATION_TYPE_TIME;
    }

    /**
     * Create {@link DreamClockTimeViewHolder}.
     */
Loading