1e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird/* 2e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird * Copyright (C) 2018 The Android Open Source Project 3e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird * 4e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird * Licensed under the Apache License, Version 2.0 (the "License"); 5e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird * you may not use this file except in compliance with the License. 6e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird * You may obtain a copy of the License at 7e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird * 8e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird * http://www.apache.org/licenses/LICENSE-2.0 9e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird * 10e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird * Unless required by applicable law or agreed to in writing, software 11e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird * distributed under the License is distributed on an "AS IS" BASIS, 12e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird * See the License for the specific language governing permissions and 14e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird * limitations under the License. 15e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird */ 16e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 17e1d13c9884e6f4579b1265400b61a36207748dc3Evan Lairdpackage com.android.systemui.statusbar; 18e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 1997ae20c5d841a244369dba5decaa3ab994cdad33Evan Lairdimport static com.android.systemui.statusbar.StatusBarIconView.STATE_DOT; 2097ae20c5d841a244369dba5decaa3ab994cdad33Evan Lairdimport static com.android.systemui.statusbar.StatusBarIconView.STATE_HIDDEN; 2197ae20c5d841a244369dba5decaa3ab994cdad33Evan Lairdimport static com.android.systemui.statusbar.StatusBarIconView.STATE_ICON; 22e1d13c9884e6f4579b1265400b61a36207748dc3Evan Lairdimport static com.android.systemui.statusbar.policy.DarkIconDispatcher.getTint; 23dbeefe3315d718f022b3b499311064a3fb015425Evan Lairdimport static com.android.systemui.statusbar.policy.DarkIconDispatcher.isInArea; 24e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 25e1d13c9884e6f4579b1265400b61a36207748dc3Evan Lairdimport android.content.Context; 26e1d13c9884e6f4579b1265400b61a36207748dc3Evan Lairdimport android.content.res.ColorStateList; 27e1d13c9884e6f4579b1265400b61a36207748dc3Evan Lairdimport android.graphics.Color; 28e1d13c9884e6f4579b1265400b61a36207748dc3Evan Lairdimport android.graphics.Rect; 29e1d13c9884e6f4579b1265400b61a36207748dc3Evan Lairdimport android.util.AttributeSet; 3097ae20c5d841a244369dba5decaa3ab994cdad33Evan Lairdimport android.util.Log; 3197ae20c5d841a244369dba5decaa3ab994cdad33Evan Lairdimport android.view.Gravity; 32e1d13c9884e6f4579b1265400b61a36207748dc3Evan Lairdimport android.view.LayoutInflater; 33e1d13c9884e6f4579b1265400b61a36207748dc3Evan Lairdimport android.view.View; 3497ae20c5d841a244369dba5decaa3ab994cdad33Evan Lairdimport android.widget.FrameLayout; 35e1d13c9884e6f4579b1265400b61a36207748dc3Evan Lairdimport android.widget.ImageView; 36e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 3797ae20c5d841a244369dba5decaa3ab994cdad33Evan Lairdimport android.widget.LinearLayout; 38e1d13c9884e6f4579b1265400b61a36207748dc3Evan Lairdimport com.android.internal.annotations.VisibleForTesting; 39e1d13c9884e6f4579b1265400b61a36207748dc3Evan Lairdimport com.android.keyguard.AlphaOptimizedLinearLayout; 40e1d13c9884e6f4579b1265400b61a36207748dc3Evan Lairdimport com.android.settingslib.graph.SignalDrawable; 41e1d13c9884e6f4579b1265400b61a36207748dc3Evan Lairdimport com.android.systemui.R; 42e1d13c9884e6f4579b1265400b61a36207748dc3Evan Lairdimport com.android.systemui.statusbar.phone.StatusBarSignalPolicy.MobileIconState; 43e1d13c9884e6f4579b1265400b61a36207748dc3Evan Lairdimport com.android.systemui.statusbar.policy.DarkIconDispatcher.DarkReceiver; 44e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 4597ae20c5d841a244369dba5decaa3ab994cdad33Evan Lairdpublic class StatusBarMobileView extends FrameLayout implements DarkReceiver, 46e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird StatusIconDisplayable { 47e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird private static final String TAG = "StatusBarMobileView"; 48e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 4997ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird /// Used to show etc dots 5097ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird private StatusBarIconView mDotView; 5197ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird /// The main icon view 5297ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird private LinearLayout mMobileGroup; 53e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird private String mSlot; 54e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird private MobileIconState mState; 55e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird private SignalDrawable mMobileDrawable; 56e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird private View mInoutContainer; 57e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird private ImageView mIn; 58e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird private ImageView mOut; 59e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird private ImageView mMobile, mMobileType, mMobileRoaming; 60e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird private View mMobileRoamingSpace; 6197ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird private int mVisibleState = -1; 62e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 6397ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird public static StatusBarMobileView fromContext(Context context, String slot) { 64e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird LayoutInflater inflater = LayoutInflater.from(context); 6597ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird StatusBarMobileView v = (StatusBarMobileView) 66e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird inflater.inflate(R.layout.status_bar_mobile_signal_group, null); 6797ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird 6897ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird v.setSlot(slot); 6997ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird v.init(); 7097ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird v.setVisibleState(STATE_ICON); 7197ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird return v; 72e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 73e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 74e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird public StatusBarMobileView(Context context) { 75e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird super(context); 76e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 77e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 78e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird public StatusBarMobileView(Context context, AttributeSet attrs) { 79e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird super(context, attrs); 80e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 81e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 82e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird public StatusBarMobileView(Context context, AttributeSet attrs, int defStyleAttr) { 83e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird super(context, attrs, defStyleAttr); 84e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 85e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 86e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird public StatusBarMobileView(Context context, AttributeSet attrs, int defStyleAttr, 87e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird int defStyleRes) { 88e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird super(context, attrs, defStyleAttr, defStyleRes); 89e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 90e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 91c1397271750a76f57edad0c85218f320d5c83a92Evan Laird @Override 92c1397271750a76f57edad0c85218f320d5c83a92Evan Laird public void getDrawingRect(Rect outRect) { 93c1397271750a76f57edad0c85218f320d5c83a92Evan Laird super.getDrawingRect(outRect); 94c1397271750a76f57edad0c85218f320d5c83a92Evan Laird float translationX = getTranslationX(); 95c1397271750a76f57edad0c85218f320d5c83a92Evan Laird float translationY = getTranslationY(); 96c1397271750a76f57edad0c85218f320d5c83a92Evan Laird outRect.left += translationX; 97c1397271750a76f57edad0c85218f320d5c83a92Evan Laird outRect.right += translationX; 98c1397271750a76f57edad0c85218f320d5c83a92Evan Laird outRect.top += translationY; 99c1397271750a76f57edad0c85218f320d5c83a92Evan Laird outRect.bottom += translationY; 100c1397271750a76f57edad0c85218f320d5c83a92Evan Laird } 101c1397271750a76f57edad0c85218f320d5c83a92Evan Laird 102e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird private void init() { 10397ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird mMobileGroup = findViewById(R.id.mobile_group); 104e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mMobile = findViewById(R.id.mobile_signal); 105e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mMobileType = findViewById(R.id.mobile_type); 106e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mMobileRoaming = findViewById(R.id.mobile_roaming); 107e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mMobileRoamingSpace = findViewById(R.id.mobile_roaming_space); 108e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mIn = findViewById(R.id.mobile_in); 109e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mOut = findViewById(R.id.mobile_out); 110e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mInoutContainer = findViewById(R.id.inout_container); 111e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 112e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mMobileDrawable = new SignalDrawable(getContext()); 113e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mMobile.setImageDrawable(mMobileDrawable); 11497ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird 11597ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird initDotView(); 11697ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird } 11797ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird 11897ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird private void initDotView() { 11997ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird mDotView = new StatusBarIconView(mContext, mSlot, null); 12097ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird mDotView.setVisibleState(STATE_DOT); 12197ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird 12297ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird int width = mContext.getResources().getDimensionPixelSize(R.dimen.status_bar_icon_size); 12397ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird LayoutParams lp = new LayoutParams(width, width); 12497ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird lp.gravity = Gravity.CENTER_VERTICAL | Gravity.START; 12597ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird addView(mDotView, lp); 126e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 127e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 128e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird public void applyMobileState(MobileIconState state) { 129e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird if (state == null) { 130e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird setVisibility(View.GONE); 131e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mState = null; 132e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird return; 133e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 134e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 135e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird if (mState == null) { 13656fb9f8aa52d14006c2638a216c113c35b801e66Evan Laird mState = state.copy(); 137e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird initViewState(); 138e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird return; 139e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 140e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 141e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird if (!mState.equals(state)) { 14256fb9f8aa52d14006c2638a216c113c35b801e66Evan Laird updateState(state.copy()); 143e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 144e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 145e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 146e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird private void initViewState() { 147e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird setContentDescription(mState.contentDescription); 148e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird if (!mState.visible) { 14997ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird mMobileGroup.setVisibility(View.GONE); 150e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } else { 15197ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird mMobileGroup.setVisibility(View.VISIBLE); 152e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 153e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mMobileDrawable.setLevel(mState.strengthId); 154e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird if (mState.typeId > 0) { 155e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mMobileType.setContentDescription(mState.typeContentDescription); 156e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mMobileType.setImageResource(mState.typeId); 157e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mMobileType.setVisibility(View.VISIBLE); 158e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } else { 159e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mMobileType.setVisibility(View.GONE); 160e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 161e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 162e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mMobileRoaming.setVisibility(mState.roaming ? View.VISIBLE : View.GONE); 163e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mMobileRoamingSpace.setVisibility(mState.roaming ? View.VISIBLE : View.GONE); 164e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mIn.setVisibility(mState.activityIn ? View.VISIBLE : View.GONE); 165e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mOut.setVisibility(mState.activityIn ? View.VISIBLE : View.GONE); 166e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mInoutContainer.setVisibility((mState.activityIn || mState.activityOut) 167e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird ? View.VISIBLE : View.GONE); 168e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 169e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 170e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird private void updateState(MobileIconState state) { 171e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird setContentDescription(state.contentDescription); 172e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird if (mState.visible != state.visible) { 17397ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird mMobileGroup.setVisibility(state.visible ? View.VISIBLE : View.GONE); 174e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 175e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird if (mState.strengthId != state.strengthId) { 176e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mMobileDrawable.setLevel(state.strengthId); 177e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 1786dedbe6a4de6a0fe2045f60d90da5e1a41d3156fEvan Laird if (mState.typeId != state.typeId) { 1796dedbe6a4de6a0fe2045f60d90da5e1a41d3156fEvan Laird if (state.typeId != 0) { 1806dedbe6a4de6a0fe2045f60d90da5e1a41d3156fEvan Laird mMobileType.setContentDescription(state.typeContentDescription); 1816dedbe6a4de6a0fe2045f60d90da5e1a41d3156fEvan Laird mMobileType.setImageResource(state.typeId); 1826dedbe6a4de6a0fe2045f60d90da5e1a41d3156fEvan Laird mMobileType.setVisibility(View.VISIBLE); 1836dedbe6a4de6a0fe2045f60d90da5e1a41d3156fEvan Laird } else { 1846dedbe6a4de6a0fe2045f60d90da5e1a41d3156fEvan Laird mMobileType.setVisibility(View.GONE); 1856dedbe6a4de6a0fe2045f60d90da5e1a41d3156fEvan Laird } 186e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 187e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 188e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mMobileRoaming.setVisibility(state.roaming ? View.VISIBLE : View.GONE); 189e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mMobileRoamingSpace.setVisibility(state.roaming ? View.VISIBLE : View.GONE); 190e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mIn.setVisibility(state.activityIn ? View.VISIBLE : View.GONE); 191e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mOut.setVisibility(state.activityIn ? View.VISIBLE : View.GONE); 192e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mInoutContainer.setVisibility((state.activityIn || state.activityOut) 193e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird ? View.VISIBLE : View.GONE); 194e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 195e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mState = state; 196e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 197e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 198e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird @Override 199e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird public void onDarkChanged(Rect area, float darkIntensity, int tint) { 200dbeefe3315d718f022b3b499311064a3fb015425Evan Laird if (!isInArea(area, this)) { 201dbeefe3315d718f022b3b499311064a3fb015425Evan Laird return; 202dbeefe3315d718f022b3b499311064a3fb015425Evan Laird } 203e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mMobileDrawable.setDarkIntensity(darkIntensity); 204e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird ColorStateList color = ColorStateList.valueOf(getTint(area, this, tint)); 205e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mIn.setImageTintList(color); 206e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mOut.setImageTintList(color); 207e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mMobileType.setImageTintList(color); 208e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mMobileRoaming.setImageTintList(color); 20997ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird mDotView.setDecorColor(tint); 21097ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird mDotView.setIconColor(tint, false); 211e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 212e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 213e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird @Override 214e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird public String getSlot() { 215e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird return mSlot; 216e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 217e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 218e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird public void setSlot(String slot) { 219e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mSlot = slot; 220e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 221e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 222e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird @Override 223e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird public void setStaticDrawableColor(int color) { 224e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird ColorStateList list = ColorStateList.valueOf(color); 225e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird float intensity = color == Color.WHITE ? 0 : 1; 226e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mMobileDrawable.setDarkIntensity(intensity); 227e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 228e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mIn.setImageTintList(list); 229e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mOut.setImageTintList(list); 230e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mMobileType.setImageTintList(list); 231e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird mMobileRoaming.setImageTintList(list); 23297ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird mDotView.setDecorColor(color); 233e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 234e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 235e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird @Override 23620b87bf0ae8c880a76d0de859b3665b7d4f2e144Evan Laird public void setDecorColor(int color) { 23797ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird mDotView.setDecorColor(color); 23820b87bf0ae8c880a76d0de859b3665b7d4f2e144Evan Laird } 23920b87bf0ae8c880a76d0de859b3665b7d4f2e144Evan Laird 24020b87bf0ae8c880a76d0de859b3665b7d4f2e144Evan Laird @Override 241e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird public boolean isIconVisible() { 242e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird return mState.visible; 243e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 244e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 24520b87bf0ae8c880a76d0de859b3665b7d4f2e144Evan Laird @Override 24620b87bf0ae8c880a76d0de859b3665b7d4f2e144Evan Laird public void setVisibleState(int state) { 24797ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird if (state == mVisibleState) { 24897ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird return; 24997ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird } 25097ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird 25197ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird mVisibleState = state; 25297ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird switch (state) { 25397ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird case STATE_ICON: 25497ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird mMobileGroup.setVisibility(View.VISIBLE); 25597ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird mDotView.setVisibility(View.GONE); 25697ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird break; 25797ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird case STATE_DOT: 25897ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird mMobileGroup.setVisibility(View.INVISIBLE); 25997ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird mDotView.setVisibility(View.VISIBLE); 26097ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird break; 26197ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird case STATE_HIDDEN: 26297ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird default: 26378047782344dc2f75ec4fca7b884946065d2aadfEvan Laird mMobileGroup.setVisibility(View.INVISIBLE); 26478047782344dc2f75ec4fca7b884946065d2aadfEvan Laird mDotView.setVisibility(View.INVISIBLE); 26597ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird break; 26697ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird } 26720b87bf0ae8c880a76d0de859b3665b7d4f2e144Evan Laird } 26820b87bf0ae8c880a76d0de859b3665b7d4f2e144Evan Laird 269150701d41f6e766b07265798c4dd9b5fc78e02ccEvan Laird @Override 270150701d41f6e766b07265798c4dd9b5fc78e02ccEvan Laird public int getVisibleState() { 27197ae20c5d841a244369dba5decaa3ab994cdad33Evan Laird return mVisibleState; 272150701d41f6e766b07265798c4dd9b5fc78e02ccEvan Laird } 273150701d41f6e766b07265798c4dd9b5fc78e02ccEvan Laird 274e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird @VisibleForTesting 275e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird public MobileIconState getState() { 276e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird return mState; 277e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 278e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird 279e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird @Override 280e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird public String toString() { 281e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird return "StatusBarMobileView(slot=" + mSlot + " state=" + mState + ")"; 282e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird } 283e1d13c9884e6f4579b1265400b61a36207748dc3Evan Laird} 284