diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java index c52c0aae35568..61f7fe8dc0190 100644 --- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java +++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java @@ -108,6 +108,7 @@ public interface QSTile { public Supplier iconSupplier; public int state = Tile.STATE_ACTIVE; public CharSequence label; + public CharSequence secondaryLabel; public CharSequence contentDescription; public CharSequence dualLabelContentDescription; public boolean disabledByPolicy; @@ -122,6 +123,7 @@ public interface QSTile { final boolean changed = !Objects.equals(other.icon, icon) || !Objects.equals(other.iconSupplier, iconSupplier) || !Objects.equals(other.label, label) + || !Objects.equals(other.secondaryLabel, secondaryLabel) || !Objects.equals(other.contentDescription, contentDescription) || !Objects.equals(other.dualLabelContentDescription, dualLabelContentDescription) @@ -135,6 +137,7 @@ public interface QSTile { other.icon = icon; other.iconSupplier = iconSupplier; other.label = label; + other.secondaryLabel = secondaryLabel; other.contentDescription = contentDescription; other.dualLabelContentDescription = dualLabelContentDescription; other.expandedAccessibilityClassName = expandedAccessibilityClassName; @@ -156,6 +159,7 @@ public interface QSTile { sb.append(",icon=").append(icon); sb.append(",iconSupplier=").append(iconSupplier); sb.append(",label=").append(label); + sb.append(",secondaryLabel=").append(secondaryLabel); sb.append(",contentDescription=").append(contentDescription); sb.append(",dualLabelContentDescription=").append(dualLabelContentDescription); sb.append(",expandedAccessibilityClassName=").append(expandedAccessibilityClassName); diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileView.java b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileView.java index 263dac0f44ece..a226f3cac83a7 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileView.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileView.java @@ -18,6 +18,7 @@ import android.content.Context; import android.content.res.Configuration; import android.service.quicksettings.Tile; import android.text.SpannableStringBuilder; +import android.text.TextUtils; import android.text.style.ForegroundColorSpan; import android.view.Gravity; import android.view.LayoutInflater; @@ -28,6 +29,7 @@ import android.widget.TextView; import com.android.systemui.FontSizeUtils; import com.android.systemui.R; +import com.android.systemui.R.id; import com.android.systemui.plugins.qs.QSIconView; import com.android.systemui.plugins.qs.QSTile; @@ -36,8 +38,10 @@ import libcore.util.Objects; /** View that represents a standard quick settings tile. **/ public class QSTileView extends QSTileBaseView { + private static final boolean DUAL_TARGET_ALLOWED = false; private View mDivider; protected TextView mLabel; + private TextView mSecondLine; private ImageView mPadLock; private int mState; private ViewGroup mLabelContainer; @@ -86,6 +90,8 @@ public class QSTileView extends QSTileBaseView { mDivider = mLabelContainer.findViewById(R.id.underline); mExpandIndicator = mLabelContainer.findViewById(R.id.expand_indicator); mExpandSpace = mLabelContainer.findViewById(R.id.expand_space); + mSecondLine = mLabelContainer.findViewById(R.id.app_label); + mSecondLine.setAlpha(.6f); addView(mLabelContainer); } @@ -103,14 +109,20 @@ public class QSTileView extends QSTileBaseView { mState = state.state; mLabel.setText(state.label); } - mExpandIndicator.setVisibility(state.dualTarget ? View.VISIBLE : View.GONE); - mExpandSpace.setVisibility(state.dualTarget ? View.VISIBLE : View.GONE); - mLabelContainer.setContentDescription(state.dualTarget ? state.dualLabelContentDescription + if (!Objects.equal(mSecondLine.getText(), state.secondaryLabel)) { + mSecondLine.setText(state.secondaryLabel); + mSecondLine.setVisibility(TextUtils.isEmpty(state.secondaryLabel) ? View.GONE + : View.VISIBLE); + } + boolean dualTarget = DUAL_TARGET_ALLOWED && state.dualTarget; + mExpandIndicator.setVisibility(dualTarget ? View.VISIBLE : View.GONE); + mExpandSpace.setVisibility(dualTarget ? View.VISIBLE : View.GONE); + mLabelContainer.setContentDescription(dualTarget ? state.dualLabelContentDescription : null); - if (state.dualTarget != mLabelContainer.isClickable()) { - mLabelContainer.setClickable(state.dualTarget); - mLabelContainer.setLongClickable(state.dualTarget); - mLabelContainer.setBackground(state.dualTarget ? newTileBackground() : null); + if (dualTarget != mLabelContainer.isClickable()) { + mLabelContainer.setClickable(dualTarget); + mLabelContainer.setLongClickable(dualTarget); + mLabelContainer.setBackground(dualTarget ? newTileBackground() : null); } mLabel.setEnabled(!state.disabledByPolicy); mPadLock.setVisibility(state.disabledByPolicy ? View.VISIBLE : View.GONE); diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java index 0e4a9fe32911d..fff9f8e7e038f 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java @@ -125,11 +125,11 @@ public class BluetoothTile extends QSTileImpl { state.slash = new SlashState(); } state.slash.isSlashed = !enabled; + state.label = mContext.getString(R.string.quick_settings_bluetooth_label); if (enabled) { - state.label = null; if (connected) { state.icon = ResourceIcon.get(R.drawable.ic_qs_bluetooth_connected); - state.label = mController.getLastDeviceName(); + state.secondaryLabel = mController.getLastDeviceName(); CachedBluetoothDevice lastDevice = mController.getLastDevice(); if (lastDevice != null) { int batteryLevel = lastDevice.getBatteryLevel(); @@ -140,25 +140,20 @@ public class BluetoothTile extends QSTileImpl { } } state.contentDescription = mContext.getString( - R.string.accessibility_bluetooth_name, state.label); + R.string.accessibility_bluetooth_name, state.secondaryLabel); } else if (state.isTransient) { state.icon = ResourceIcon.get(R.drawable.ic_bluetooth_transient_animation); state.contentDescription = mContext.getString( R.string.accessibility_quick_settings_bluetooth_connecting); - state.label = mContext.getString(R.string.quick_settings_bluetooth_label); } else { state.icon = ResourceIcon.get(R.drawable.ic_qs_bluetooth_on); state.contentDescription = mContext.getString( R.string.accessibility_quick_settings_bluetooth_on) + "," + mContext.getString(R.string.accessibility_not_connected); } - if (TextUtils.isEmpty(state.label)) { - state.label = mContext.getString(R.string.quick_settings_bluetooth_label); - } state.state = Tile.STATE_ACTIVE; } else { state.icon = ResourceIcon.get(R.drawable.ic_qs_bluetooth_on); - state.label = mContext.getString(R.string.quick_settings_bluetooth_label); state.contentDescription = mContext.getString( R.string.accessibility_quick_settings_bluetooth_off); state.state = Tile.STATE_INACTIVE;