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

Commit 20b87bf0 authored by Evan Laird's avatar Evan Laird
Browse files

Limit status icons and show etc dots

When <= 5 status icons exist, try to show them all (space permitting).
If > 5 exist, show 4 and etc dots.

Test: visual
Change-Id: I4c09344bee75b3cab6256dd69f11337b9b667b0f
Fixes: 73778753
Fixes: 77660387
Bug: 77822905
parent 2bb1d264
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -23,6 +23,7 @@
    android:layout_width="wrap_content"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:layout_gravity="center_vertical"
    android:paddingStart="2dp"
    android:orientation="horizontal">
    android:orientation="horizontal">
    <FrameLayout
    <FrameLayout
        android:id="@+id/inout_container"
        android:id="@+id/inout_container"
+57 −51
Original line number Original line Diff line number Diff line
@@ -22,10 +22,15 @@
    android:id="@+id/wifi_combo"
    android:id="@+id/wifi_combo"
    android:layout_width="wrap_content"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_height="match_parent"
    android:paddingStart="4dp"
    android:gravity="center_vertical" >
    android:gravity="center_vertical"
    android:orientation="horizontal" >


    <com.android.keyguard.AlphaOptimizedLinearLayout
        android:id="@+id/wifi_group"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:paddingStart="2dp"
        android:gravity="center_vertical"
    >
        <FrameLayout
        <FrameLayout
                android:id="@+id/inout_container"
                android:id="@+id/inout_container"
                android:layout_height="17dp"
                android:layout_height="17dp"
@@ -79,4 +84,5 @@
            android:layout_height="4dp"
            android:layout_height="4dp"
            android:visibility="gone"
            android:visibility="gone"
        />
        />
    </com.android.keyguard.AlphaOptimizedLinearLayout>
</com.android.systemui.statusbar.StatusBarWifiView>
</com.android.systemui.statusbar.StatusBarWifiView>
+4 −1
Original line number Original line Diff line number Diff line
@@ -56,6 +56,7 @@ import com.android.systemui.statusbar.phone.PhoneStatusBarView;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.phone.StatusBarIconController.TintedIconManager;
import com.android.systemui.statusbar.phone.StatusBarIconController.TintedIconManager;
import com.android.systemui.statusbar.policy.Clock;
import com.android.systemui.statusbar.policy.Clock;
import com.android.systemui.statusbar.phone.StatusIconContainer;
import com.android.systemui.statusbar.policy.DarkIconDispatcher;
import com.android.systemui.statusbar.policy.DarkIconDispatcher;
import com.android.systemui.statusbar.policy.DarkIconDispatcher.DarkReceiver;
import com.android.systemui.statusbar.policy.DarkIconDispatcher.DarkReceiver;
import com.android.systemui.statusbar.policy.DateView;
import com.android.systemui.statusbar.policy.DateView;
@@ -147,7 +148,9 @@ public class QuickStatusBarHeader extends RelativeLayout implements CommandQueue
        mDate.setOnClickListener(this);
        mDate.setOnClickListener(this);
        mSystemIconsView = findViewById(R.id.quick_status_bar_system_icons);
        mSystemIconsView = findViewById(R.id.quick_status_bar_system_icons);
        mQuickQsStatusIcons = findViewById(R.id.quick_qs_status_icons);
        mQuickQsStatusIcons = findViewById(R.id.quick_qs_status_icons);
        mIconManager = new TintedIconManager(findViewById(R.id.statusIcons));
        StatusIconContainer iconContainer = findViewById(R.id.statusIcons);
        iconContainer.setShouldRestrictIcons(false);
        mIconManager = new TintedIconManager(iconContainer);


        // Views corresponding to the header info section (e.g. tooltip and next alarm).
        // Views corresponding to the header info section (e.g. tooltip and next alarm).
        mHeaderTextContainerView = findViewById(R.id.header_text_container);
        mHeaderTextContainerView = findViewById(R.id.header_text_container);
+19 −17
Original line number Original line Diff line number Diff line
@@ -163,7 +163,6 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi
        mNumberPain.setColor(context.getColor(R.drawable.notification_number_text_color));
        mNumberPain.setColor(context.getColor(R.drawable.notification_number_text_color));
        mNumberPain.setAntiAlias(true);
        mNumberPain.setAntiAlias(true);
        setNotification(sbn);
        setNotification(sbn);
        maybeUpdateIconScaleDimens();
        setScaleType(ScaleType.CENTER);
        setScaleType(ScaleType.CENTER);
        mDensity = context.getResources().getDisplayMetrics().densityDpi;
        mDensity = context.getResources().getDisplayMetrics().densityDpi;
        if (mNotification != null) {
        if (mNotification != null) {
@@ -171,25 +170,17 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi
                    com.android.internal.R.color.notification_default_color_light));
                    com.android.internal.R.color.notification_default_color_light));
        }
        }
        reloadDimens();
        reloadDimens();
        maybeUpdateIconScaleDimens();
    }
    }


    /** Should always be preceded by {@link #reloadDimens()} */
    private void maybeUpdateIconScaleDimens() {
    private void maybeUpdateIconScaleDimens() {
        // We do not resize and scale system icons (on the right), only notification icons (on the
        // We do not resize and scale system icons (on the right), only notification icons (on the
        // left).
        // left).
        if (mNotification != null || mAlwaysScaleIcon) {
        if (mNotification != null || mAlwaysScaleIcon) {
            updateIconScaleDimens();
        }
    }

    private void updateIconScaleDimens() {
        Resources res = mContext.getResources();
        mStatusBarIconSize = res.getDimensionPixelSize(R.dimen.status_bar_icon_size);
        mStatusBarIconDrawingSizeDark =
                res.getDimensionPixelSize(R.dimen.status_bar_icon_drawing_size_dark);
        mStatusBarIconDrawingSize =
                res.getDimensionPixelSize(R.dimen.status_bar_icon_drawing_size);
            updateIconScale();
            updateIconScale();
        }
        }
    }


    private void updateIconScale() {
    private void updateIconScale() {
        final float imageBounds = NotificationUtils.interpolate(
        final float imageBounds = NotificationUtils.interpolate(
@@ -214,15 +205,21 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi
        int density = newConfig.densityDpi;
        int density = newConfig.densityDpi;
        if (density != mDensity) {
        if (density != mDensity) {
            mDensity = density;
            mDensity = density;
            reloadDimens();
            maybeUpdateIconScaleDimens();
            maybeUpdateIconScaleDimens();
            updateDrawable();
            updateDrawable();
            reloadDimens();
        }
        }
    }
    }


    private void reloadDimens() {
    private void reloadDimens() {
        boolean applyRadius = mDotRadius == mStaticDotRadius;
        boolean applyRadius = mDotRadius == mStaticDotRadius;
        mStaticDotRadius = getResources().getDimensionPixelSize(R.dimen.overflow_dot_radius);
        Resources res = getResources();
        mStaticDotRadius = res.getDimensionPixelSize(R.dimen.overflow_dot_radius);
        mStatusBarIconSize = res.getDimensionPixelSize(R.dimen.status_bar_icon_size);
        mStatusBarIconDrawingSizeDark =
                res.getDimensionPixelSize(R.dimen.status_bar_icon_drawing_size_dark);
        mStatusBarIconDrawingSize =
                res.getDimensionPixelSize(R.dimen.status_bar_icon_drawing_size);
        if (applyRadius) {
        if (applyRadius) {
            mDotRadius = mStaticDotRadius;
            mDotRadius = mStaticDotRadius;
        }
        }
@@ -240,7 +237,8 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi
        mDozer = new NotificationIconDozeHelper(context);
        mDozer = new NotificationIconDozeHelper(context);
        mBlocked = false;
        mBlocked = false;
        mAlwaysScaleIcon = true;
        mAlwaysScaleIcon = true;
        updateIconScaleDimens();
        reloadDimens();
        updateIconScale();
        mDensity = context.getResources().getDisplayMetrics().densityDpi;
        mDensity = context.getResources().getDisplayMetrics().densityDpi;
    }
    }


@@ -425,7 +423,7 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi
                radius = NotificationUtils.interpolate(mDotRadius, getWidth() / 4, fadeOutAmount);
                radius = NotificationUtils.interpolate(mDotRadius, getWidth() / 4, fadeOutAmount);
            }
            }
            mDotPaint.setAlpha((int) (alpha * 255));
            mDotPaint.setAlpha((int) (alpha * 255));
            canvas.drawCircle(getWidth() / 2, getHeight() / 2, radius, mDotPaint);
            canvas.drawCircle(mStatusBarIconSize / 2, getHeight() / 2, radius, mDotPaint);
        }
        }
    }
    }


@@ -657,6 +655,7 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi
        mContrastedDrawableColor = contrastedColor;
        mContrastedDrawableColor = contrastedColor;
    }
    }


    @Override
    public void setVisibleState(int state) {
    public void setVisibleState(int state) {
        setVisibleState(state, true /* animate */, null /* endRunnable */);
        setVisibleState(state, true /* animate */, null /* endRunnable */);
    }
    }
@@ -872,7 +871,10 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi


    @Override
    @Override
    public void onDarkChanged(Rect area, float darkIntensity, int tint) {
    public void onDarkChanged(Rect area, float darkIntensity, int tint) {
        setImageTintList(ColorStateList.valueOf(getTint(area, this, tint)));
        int areaTint = getTint(area, this, tint);
        ColorStateList color = ColorStateList.valueOf(areaTint);
        setImageTintList(color);
        setDecorColor(areaTint);
    }
    }


    @Override
    @Override
+10 −0
Original line number Original line Diff line number Diff line
@@ -196,11 +196,21 @@ public class StatusBarMobileView extends AlphaOptimizedLinearLayout implements D
        mMobileRoaming.setImageTintList(list);
        mMobileRoaming.setImageTintList(list);
    }
    }


    @Override
    public void setDecorColor(int color) {
        //TODO: May also not be needed
    }

    @Override
    @Override
    public boolean isIconVisible() {
    public boolean isIconVisible() {
        return mState.visible;
        return mState.visible;
    }
    }


    @Override
    public void setVisibleState(int state) {
        //TODO: May not be needed. Mobile is always expected to be visible (not a dot)
    }

    @VisibleForTesting
    @VisibleForTesting
    public MobileIconState getState() {
    public MobileIconState getState() {
        return mState;
        return mState;
Loading