Loading packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java +5 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import com.android.systemui.plugins.qs.QSTile.Icon; import com.android.systemui.plugins.qs.QSTile.State; import java.util.Objects; import java.util.function.Supplier; @ProvidesInterface(version = QSTile.VERSION) @DependsOn(target = QSIconView.class) Loading Loading @@ -104,6 +105,7 @@ public interface QSTile { public static class State { public static final int VERSION = 1; public Icon icon; public Supplier<Icon> iconSupplier; public int state = Tile.STATE_ACTIVE; public CharSequence label; public CharSequence contentDescription; Loading @@ -118,6 +120,7 @@ public interface QSTile { if (other == null) throw new IllegalArgumentException(); if (!other.getClass().equals(getClass())) throw new IllegalArgumentException(); final boolean changed = !Objects.equals(other.icon, icon) || !Objects.equals(other.iconSupplier, iconSupplier) || !Objects.equals(other.label, label) || !Objects.equals(other.contentDescription, contentDescription) || !Objects.equals(other.dualLabelContentDescription, Loading @@ -130,6 +133,7 @@ public interface QSTile { || !Objects.equals(other.dualTarget, dualTarget) || !Objects.equals(other.slash, slash); other.icon = icon; other.iconSupplier = iconSupplier; other.label = label; other.contentDescription = contentDescription; other.dualLabelContentDescription = dualLabelContentDescription; Loading @@ -150,6 +154,7 @@ public interface QSTile { protected StringBuilder toStringBuilder() { final StringBuilder sb = new StringBuilder(getClass().getSimpleName()).append('['); sb.append(",icon=").append(icon); sb.append(",iconSupplier=").append(iconSupplier); sb.append(",label=").append(label); sb.append(",contentDescription=").append(contentDescription); sb.append(",dualLabelContentDescription=").append(dualLabelContentDescription); Loading packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java +9 −1 Original line number Diff line number Diff line Loading @@ -305,7 +305,15 @@ public class CustomTile extends QSTileImpl<State> implements TileChangeListener state.state = Tile.STATE_UNAVAILABLE; drawable = mDefaultIcon.loadDrawable(mContext); } state.icon = new DrawableIcon(drawable); final Drawable drawableF = drawable; state.iconSupplier = () -> { Drawable.ConstantState cs = drawableF.getConstantState(); if (cs != null) { return new DrawableIcon(cs.newDrawable()); } return null; }; state.label = mTile.getLabel(); if (mTile.getContentDescription() != null) { state.contentDescription = mTile.getContentDescription(); Loading packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSIconViewImpl.java +7 −6 Original line number Diff line number Diff line Loading @@ -87,14 +87,15 @@ public class QSIconViewImpl extends QSIconView { } protected void updateIcon(ImageView iv, State state) { if (!Objects.equals(state.icon, iv.getTag(R.id.qs_icon_tag)) final QSTile.Icon icon = state.iconSupplier != null ? state.iconSupplier.get() : state.icon; if (!Objects.equals(icon, iv.getTag(R.id.qs_icon_tag)) || !Objects.equals(state.slash, iv.getTag(R.id.qs_slash_tag))) { boolean shouldAnimate = iv.isShown() && mAnimationEnabled && iv.getDrawable() != null; Drawable d = state.icon != null ? shouldAnimate ? state.icon.getDrawable(mContext) : state.icon.getInvisibleDrawable(mContext) : null; int padding = state.icon != null ? state.icon.getPadding() : 0; Drawable d = icon != null ? shouldAnimate ? icon.getDrawable(mContext) : icon.getInvisibleDrawable(mContext) : null; int padding = icon != null ? icon.getPadding() : 0; if (d != null) { d.setAutoMirrored(false); d.setLayoutDirection(getLayoutDirection()); Loading @@ -107,7 +108,7 @@ public class QSIconViewImpl extends QSIconView { iv.setImageDrawable(d); } iv.setTag(R.id.qs_icon_tag, state.icon); iv.setTag(R.id.qs_icon_tag, icon); iv.setTag(R.id.qs_slash_tag, state.slash); iv.setPadding(0, padding, 0, padding); if (d instanceof Animatable2) { Loading Loading
packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java +5 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import com.android.systemui.plugins.qs.QSTile.Icon; import com.android.systemui.plugins.qs.QSTile.State; import java.util.Objects; import java.util.function.Supplier; @ProvidesInterface(version = QSTile.VERSION) @DependsOn(target = QSIconView.class) Loading Loading @@ -104,6 +105,7 @@ public interface QSTile { public static class State { public static final int VERSION = 1; public Icon icon; public Supplier<Icon> iconSupplier; public int state = Tile.STATE_ACTIVE; public CharSequence label; public CharSequence contentDescription; Loading @@ -118,6 +120,7 @@ public interface QSTile { if (other == null) throw new IllegalArgumentException(); if (!other.getClass().equals(getClass())) throw new IllegalArgumentException(); final boolean changed = !Objects.equals(other.icon, icon) || !Objects.equals(other.iconSupplier, iconSupplier) || !Objects.equals(other.label, label) || !Objects.equals(other.contentDescription, contentDescription) || !Objects.equals(other.dualLabelContentDescription, Loading @@ -130,6 +133,7 @@ public interface QSTile { || !Objects.equals(other.dualTarget, dualTarget) || !Objects.equals(other.slash, slash); other.icon = icon; other.iconSupplier = iconSupplier; other.label = label; other.contentDescription = contentDescription; other.dualLabelContentDescription = dualLabelContentDescription; Loading @@ -150,6 +154,7 @@ public interface QSTile { protected StringBuilder toStringBuilder() { final StringBuilder sb = new StringBuilder(getClass().getSimpleName()).append('['); sb.append(",icon=").append(icon); sb.append(",iconSupplier=").append(iconSupplier); sb.append(",label=").append(label); sb.append(",contentDescription=").append(contentDescription); sb.append(",dualLabelContentDescription=").append(dualLabelContentDescription); Loading
packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java +9 −1 Original line number Diff line number Diff line Loading @@ -305,7 +305,15 @@ public class CustomTile extends QSTileImpl<State> implements TileChangeListener state.state = Tile.STATE_UNAVAILABLE; drawable = mDefaultIcon.loadDrawable(mContext); } state.icon = new DrawableIcon(drawable); final Drawable drawableF = drawable; state.iconSupplier = () -> { Drawable.ConstantState cs = drawableF.getConstantState(); if (cs != null) { return new DrawableIcon(cs.newDrawable()); } return null; }; state.label = mTile.getLabel(); if (mTile.getContentDescription() != null) { state.contentDescription = mTile.getContentDescription(); Loading
packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSIconViewImpl.java +7 −6 Original line number Diff line number Diff line Loading @@ -87,14 +87,15 @@ public class QSIconViewImpl extends QSIconView { } protected void updateIcon(ImageView iv, State state) { if (!Objects.equals(state.icon, iv.getTag(R.id.qs_icon_tag)) final QSTile.Icon icon = state.iconSupplier != null ? state.iconSupplier.get() : state.icon; if (!Objects.equals(icon, iv.getTag(R.id.qs_icon_tag)) || !Objects.equals(state.slash, iv.getTag(R.id.qs_slash_tag))) { boolean shouldAnimate = iv.isShown() && mAnimationEnabled && iv.getDrawable() != null; Drawable d = state.icon != null ? shouldAnimate ? state.icon.getDrawable(mContext) : state.icon.getInvisibleDrawable(mContext) : null; int padding = state.icon != null ? state.icon.getPadding() : 0; Drawable d = icon != null ? shouldAnimate ? icon.getDrawable(mContext) : icon.getInvisibleDrawable(mContext) : null; int padding = icon != null ? icon.getPadding() : 0; if (d != null) { d.setAutoMirrored(false); d.setLayoutDirection(getLayoutDirection()); Loading @@ -107,7 +108,7 @@ public class QSIconViewImpl extends QSIconView { iv.setImageDrawable(d); } iv.setTag(R.id.qs_icon_tag, state.icon); iv.setTag(R.id.qs_icon_tag, icon); iv.setTag(R.id.qs_slash_tag, state.slash); iv.setPadding(0, padding, 0, padding); if (d instanceof Animatable2) { Loading