From 611994e01f893b84f14faaa990c710608cb09b47 Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Thu, 25 Feb 2016 16:46:55 -0500 Subject: [PATCH] Add unavailable state to the flashlight icon Bug: 26851684 Change-Id: I08c438aaef3e5f0731fbd1b5fef79c87c75d3022 --- packages/SystemUI/res/values/strings.xml | 2 ++ .../com/android/systemui/qs/tiles/FlashlightTile.java | 18 +++++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 8bfd943dcedc..51b669c211ce 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -497,6 +497,8 @@ Less time. Flashlight off. + + Flashlight unavailable. Flashlight on. diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java index c10843a30547..e4e379058399 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java @@ -17,9 +17,11 @@ package com.android.systemui.qs.tiles; import android.app.ActivityManager; - import android.content.Intent; +import android.graphics.drawable.Drawable; import android.provider.MediaStore; +import android.text.SpannableStringBuilder; +import android.text.style.ForegroundColorSpan; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.systemui.R; @@ -79,9 +81,19 @@ public class FlashlightTile extends QSTile implements @Override protected void handleUpdateState(BooleanState state, Object arg) { - // TODO: Flashlight available handling... -// state.visible = mFlashlightController.isAvailable(); state.label = mHost.getContext().getString(R.string.quick_settings_flashlight_label); + if (!mFlashlightController.isAvailable()) { + Drawable icon = mHost.getContext().getDrawable(R.drawable.ic_signal_flashlight_disable); + final int disabledColor = mHost.getContext().getColor(R.color.qs_tile_tint_unavailable); + icon.setTint(disabledColor); + state.icon = new DrawableIcon(icon); + state.label = new SpannableStringBuilder().append(state.label, + new ForegroundColorSpan(disabledColor), + SpannableStringBuilder.SPAN_INCLUSIVE_INCLUSIVE); + state.contentDescription = mContext.getString( + R.string.accessibility_quick_settings_flashlight_unavailable); + return; + } if (arg instanceof Boolean) { boolean value = (Boolean) arg; if (value == state.value) { -- 2.11.0