Loading packages/SystemUI/res/layout/status_bar_mobile_signal_group.xml +56 −48 Original line number Diff line number Diff line Loading @@ -21,10 +21,17 @@ xmlns:systemui="http://schemas.android.com/apk/res-auto" android:id="@+id/mobile_combo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_height="match_parent" android:gravity="center_vertical" > <com.android.keyguard.AlphaOptimizedLinearLayout android:id="@+id/mobile_group" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center_vertical" android:paddingStart="2dp" android:orientation="horizontal" > <FrameLayout android:id="@+id/inout_container" android:layout_height="17dp" Loading Loading @@ -78,5 +85,6 @@ android:contentDescription="@string/data_connection_roaming" android:visibility="gone" /> </FrameLayout> </com.android.keyguard.AlphaOptimizedLinearLayout> </com.android.systemui.statusbar.StatusBarMobileView> packages/SystemUI/src/com/android/systemui/statusbar/StatusBarMobileView.java +60 −17 Original line number Diff line number Diff line Loading @@ -16,6 +16,9 @@ package com.android.systemui.statusbar; import static com.android.systemui.statusbar.StatusBarIconView.STATE_DOT; import static com.android.systemui.statusbar.StatusBarIconView.STATE_HIDDEN; import static com.android.systemui.statusbar.StatusBarIconView.STATE_ICON; import static com.android.systemui.statusbar.policy.DarkIconDispatcher.getTint; import static com.android.systemui.statusbar.policy.DarkIconDispatcher.isInArea; Loading @@ -24,10 +27,14 @@ import android.content.res.ColorStateList; import android.graphics.Color; import android.graphics.Rect; import android.util.AttributeSet; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import com.android.internal.annotations.VisibleForTesting; import com.android.keyguard.AlphaOptimizedLinearLayout; import com.android.settingslib.graph.SignalDrawable; Loading @@ -35,10 +42,14 @@ import com.android.systemui.R; import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.MobileIconState; import com.android.systemui.statusbar.policy.DarkIconDispatcher.DarkReceiver; public class StatusBarMobileView extends AlphaOptimizedLinearLayout implements DarkReceiver, public class StatusBarMobileView extends FrameLayout implements DarkReceiver, StatusIconDisplayable { private static final String TAG = "StatusBarMobileView"; /// Used to show etc dots private StatusBarIconView mDotView; /// The main icon view private LinearLayout mMobileGroup; private String mSlot; private MobileIconState mState; private SignalDrawable mMobileDrawable; Loading @@ -47,12 +58,17 @@ public class StatusBarMobileView extends AlphaOptimizedLinearLayout implements D private ImageView mOut; private ImageView mMobile, mMobileType, mMobileRoaming; private View mMobileRoamingSpace; private int mVisibleState = -1; public static StatusBarMobileView fromContext(Context context) { public static StatusBarMobileView fromContext(Context context, String slot) { LayoutInflater inflater = LayoutInflater.from(context); return (StatusBarMobileView) StatusBarMobileView v = (StatusBarMobileView) inflater.inflate(R.layout.status_bar_mobile_signal_group, null); v.setSlot(slot); v.init(); v.setVisibleState(STATE_ICON); return v; } public StatusBarMobileView(Context context) { Loading @@ -72,14 +88,8 @@ public class StatusBarMobileView extends AlphaOptimizedLinearLayout implements D super(context, attrs, defStyleAttr, defStyleRes); } @Override protected void onFinishInflate() { super.onFinishInflate(); init(); } private void init() { mMobileGroup = findViewById(R.id.mobile_group); mMobile = findViewById(R.id.mobile_signal); mMobileType = findViewById(R.id.mobile_type); mMobileRoaming = findViewById(R.id.mobile_roaming); Loading @@ -90,6 +100,18 @@ public class StatusBarMobileView extends AlphaOptimizedLinearLayout implements D mMobileDrawable = new SignalDrawable(getContext()); mMobile.setImageDrawable(mMobileDrawable); initDotView(); } private void initDotView() { mDotView = new StatusBarIconView(mContext, mSlot, null); mDotView.setVisibleState(STATE_DOT); int width = mContext.getResources().getDimensionPixelSize(R.dimen.status_bar_icon_size); LayoutParams lp = new LayoutParams(width, width); lp.gravity = Gravity.CENTER_VERTICAL | Gravity.START; addView(mDotView, lp); } public void applyMobileState(MobileIconState state) { Loading @@ -113,9 +135,9 @@ public class StatusBarMobileView extends AlphaOptimizedLinearLayout implements D private void initViewState() { setContentDescription(mState.contentDescription); if (!mState.visible) { setVisibility(View.GONE); mMobileGroup.setVisibility(View.GONE); } else { setVisibility(View.VISIBLE); mMobileGroup.setVisibility(View.VISIBLE); } mMobileDrawable.setLevel(mState.strengthId); if (mState.typeId > 0) { Loading @@ -137,7 +159,7 @@ public class StatusBarMobileView extends AlphaOptimizedLinearLayout implements D private void updateState(MobileIconState state) { setContentDescription(state.contentDescription); if (mState.visible != state.visible) { setVisibility(state.visible ? View.VISIBLE : View.GONE); mMobileGroup.setVisibility(state.visible ? View.VISIBLE : View.GONE); } if (mState.strengthId != state.strengthId) { mMobileDrawable.setLevel(state.strengthId); Loading Loading @@ -173,6 +195,8 @@ public class StatusBarMobileView extends AlphaOptimizedLinearLayout implements D mOut.setImageTintList(color); mMobileType.setImageTintList(color); mMobileRoaming.setImageTintList(color); mDotView.setDecorColor(tint); mDotView.setIconColor(tint, false); } @Override Loading @@ -194,11 +218,12 @@ public class StatusBarMobileView extends AlphaOptimizedLinearLayout implements D mOut.setImageTintList(list); mMobileType.setImageTintList(list); mMobileRoaming.setImageTintList(list); mDotView.setDecorColor(color); } @Override public void setDecorColor(int color) { //TODO: May also not be needed mDotView.setDecorColor(color); } @Override Loading @@ -208,12 +233,30 @@ public class StatusBarMobileView extends AlphaOptimizedLinearLayout implements D @Override public void setVisibleState(int state) { //TODO: May not be needed. Mobile is always expected to be visible (not a dot) if (state == mVisibleState) { return; } mVisibleState = state; switch (state) { case STATE_ICON: mMobileGroup.setVisibility(View.VISIBLE); mDotView.setVisibility(View.GONE); break; case STATE_DOT: mMobileGroup.setVisibility(View.INVISIBLE); mDotView.setVisibility(View.VISIBLE); break; case STATE_HIDDEN: default: setVisibility(View.INVISIBLE); break; } } @Override public int getVisibleState() { return 0; return mVisibleState; } @VisibleForTesting Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java +1 −2 Original line number Diff line number Diff line Loading @@ -237,9 +237,8 @@ public class DemoStatusIcons extends StatusIconContainer implements DemoMode, Da public void addMobileView(MobileIconState state) { Log.d(TAG, "addMobileView: "); StatusBarMobileView view = StatusBarMobileView.fromContext(mContext); StatusBarMobileView view = StatusBarMobileView.fromContext(mContext, state.slot); view.setSlot(state.slot); view.applyMobileState(state); view.setStaticDrawableColor(mColor); Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java +1 −2 Original line number Diff line number Diff line Loading @@ -296,8 +296,7 @@ public interface StatusBarIconController { } private StatusBarMobileView onCreateStatusBarMobileView(String slot) { StatusBarMobileView view = StatusBarMobileView.fromContext(mContext); view.setSlot(slot); StatusBarMobileView view = StatusBarMobileView.fromContext(mContext, slot); return view; } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusIconContainer.java +6 −5 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout { private static final String TAG = "StatusIconContainer"; private static final boolean DEBUG = false; private static final boolean DEBUG_OVERFLOW = false; // Max 5 status icons including battery // Max 8 status icons including battery private static final int MAX_ICONS = 7; private static final int MAX_DOTS = 1; Loading Loading @@ -152,7 +152,7 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout { int visibleCount = mMeasureViews.size(); int maxVisible = visibleCount <= MAX_ICONS ? MAX_ICONS : MAX_ICONS - 1; int totalWidth = getPaddingStart() + getPaddingEnd(); int totalWidth = mPaddingLeft + mPaddingRight; boolean trackWidth = true; // Measure all children so that they report the correct width Loading Loading @@ -208,8 +208,8 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout { */ private void calculateIconTranslations() { mLayoutStates.clear(); float width = getWidth() - getPaddingEnd(); float translationX = width; float width = getWidth(); float translationX = width - getPaddingEnd(); float contentStart = getPaddingStart(); int childCount = getChildCount(); // Underflow === don't show content until that index Loading Loading @@ -344,10 +344,11 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout { animate = true; } icon.setVisibleState(visibleState); if (animate) { animateTo(view, animationProperties); icon.setVisibleState(visibleState); } else { icon.setVisibleState(visibleState); super.applyToView(view); } Loading Loading
packages/SystemUI/res/layout/status_bar_mobile_signal_group.xml +56 −48 Original line number Diff line number Diff line Loading @@ -21,10 +21,17 @@ xmlns:systemui="http://schemas.android.com/apk/res-auto" android:id="@+id/mobile_combo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_height="match_parent" android:gravity="center_vertical" > <com.android.keyguard.AlphaOptimizedLinearLayout android:id="@+id/mobile_group" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center_vertical" android:paddingStart="2dp" android:orientation="horizontal" > <FrameLayout android:id="@+id/inout_container" android:layout_height="17dp" Loading Loading @@ -78,5 +85,6 @@ android:contentDescription="@string/data_connection_roaming" android:visibility="gone" /> </FrameLayout> </com.android.keyguard.AlphaOptimizedLinearLayout> </com.android.systemui.statusbar.StatusBarMobileView>
packages/SystemUI/src/com/android/systemui/statusbar/StatusBarMobileView.java +60 −17 Original line number Diff line number Diff line Loading @@ -16,6 +16,9 @@ package com.android.systemui.statusbar; import static com.android.systemui.statusbar.StatusBarIconView.STATE_DOT; import static com.android.systemui.statusbar.StatusBarIconView.STATE_HIDDEN; import static com.android.systemui.statusbar.StatusBarIconView.STATE_ICON; import static com.android.systemui.statusbar.policy.DarkIconDispatcher.getTint; import static com.android.systemui.statusbar.policy.DarkIconDispatcher.isInArea; Loading @@ -24,10 +27,14 @@ import android.content.res.ColorStateList; import android.graphics.Color; import android.graphics.Rect; import android.util.AttributeSet; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import com.android.internal.annotations.VisibleForTesting; import com.android.keyguard.AlphaOptimizedLinearLayout; import com.android.settingslib.graph.SignalDrawable; Loading @@ -35,10 +42,14 @@ import com.android.systemui.R; import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.MobileIconState; import com.android.systemui.statusbar.policy.DarkIconDispatcher.DarkReceiver; public class StatusBarMobileView extends AlphaOptimizedLinearLayout implements DarkReceiver, public class StatusBarMobileView extends FrameLayout implements DarkReceiver, StatusIconDisplayable { private static final String TAG = "StatusBarMobileView"; /// Used to show etc dots private StatusBarIconView mDotView; /// The main icon view private LinearLayout mMobileGroup; private String mSlot; private MobileIconState mState; private SignalDrawable mMobileDrawable; Loading @@ -47,12 +58,17 @@ public class StatusBarMobileView extends AlphaOptimizedLinearLayout implements D private ImageView mOut; private ImageView mMobile, mMobileType, mMobileRoaming; private View mMobileRoamingSpace; private int mVisibleState = -1; public static StatusBarMobileView fromContext(Context context) { public static StatusBarMobileView fromContext(Context context, String slot) { LayoutInflater inflater = LayoutInflater.from(context); return (StatusBarMobileView) StatusBarMobileView v = (StatusBarMobileView) inflater.inflate(R.layout.status_bar_mobile_signal_group, null); v.setSlot(slot); v.init(); v.setVisibleState(STATE_ICON); return v; } public StatusBarMobileView(Context context) { Loading @@ -72,14 +88,8 @@ public class StatusBarMobileView extends AlphaOptimizedLinearLayout implements D super(context, attrs, defStyleAttr, defStyleRes); } @Override protected void onFinishInflate() { super.onFinishInflate(); init(); } private void init() { mMobileGroup = findViewById(R.id.mobile_group); mMobile = findViewById(R.id.mobile_signal); mMobileType = findViewById(R.id.mobile_type); mMobileRoaming = findViewById(R.id.mobile_roaming); Loading @@ -90,6 +100,18 @@ public class StatusBarMobileView extends AlphaOptimizedLinearLayout implements D mMobileDrawable = new SignalDrawable(getContext()); mMobile.setImageDrawable(mMobileDrawable); initDotView(); } private void initDotView() { mDotView = new StatusBarIconView(mContext, mSlot, null); mDotView.setVisibleState(STATE_DOT); int width = mContext.getResources().getDimensionPixelSize(R.dimen.status_bar_icon_size); LayoutParams lp = new LayoutParams(width, width); lp.gravity = Gravity.CENTER_VERTICAL | Gravity.START; addView(mDotView, lp); } public void applyMobileState(MobileIconState state) { Loading @@ -113,9 +135,9 @@ public class StatusBarMobileView extends AlphaOptimizedLinearLayout implements D private void initViewState() { setContentDescription(mState.contentDescription); if (!mState.visible) { setVisibility(View.GONE); mMobileGroup.setVisibility(View.GONE); } else { setVisibility(View.VISIBLE); mMobileGroup.setVisibility(View.VISIBLE); } mMobileDrawable.setLevel(mState.strengthId); if (mState.typeId > 0) { Loading @@ -137,7 +159,7 @@ public class StatusBarMobileView extends AlphaOptimizedLinearLayout implements D private void updateState(MobileIconState state) { setContentDescription(state.contentDescription); if (mState.visible != state.visible) { setVisibility(state.visible ? View.VISIBLE : View.GONE); mMobileGroup.setVisibility(state.visible ? View.VISIBLE : View.GONE); } if (mState.strengthId != state.strengthId) { mMobileDrawable.setLevel(state.strengthId); Loading Loading @@ -173,6 +195,8 @@ public class StatusBarMobileView extends AlphaOptimizedLinearLayout implements D mOut.setImageTintList(color); mMobileType.setImageTintList(color); mMobileRoaming.setImageTintList(color); mDotView.setDecorColor(tint); mDotView.setIconColor(tint, false); } @Override Loading @@ -194,11 +218,12 @@ public class StatusBarMobileView extends AlphaOptimizedLinearLayout implements D mOut.setImageTintList(list); mMobileType.setImageTintList(list); mMobileRoaming.setImageTintList(list); mDotView.setDecorColor(color); } @Override public void setDecorColor(int color) { //TODO: May also not be needed mDotView.setDecorColor(color); } @Override Loading @@ -208,12 +233,30 @@ public class StatusBarMobileView extends AlphaOptimizedLinearLayout implements D @Override public void setVisibleState(int state) { //TODO: May not be needed. Mobile is always expected to be visible (not a dot) if (state == mVisibleState) { return; } mVisibleState = state; switch (state) { case STATE_ICON: mMobileGroup.setVisibility(View.VISIBLE); mDotView.setVisibility(View.GONE); break; case STATE_DOT: mMobileGroup.setVisibility(View.INVISIBLE); mDotView.setVisibility(View.VISIBLE); break; case STATE_HIDDEN: default: setVisibility(View.INVISIBLE); break; } } @Override public int getVisibleState() { return 0; return mVisibleState; } @VisibleForTesting Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java +1 −2 Original line number Diff line number Diff line Loading @@ -237,9 +237,8 @@ public class DemoStatusIcons extends StatusIconContainer implements DemoMode, Da public void addMobileView(MobileIconState state) { Log.d(TAG, "addMobileView: "); StatusBarMobileView view = StatusBarMobileView.fromContext(mContext); StatusBarMobileView view = StatusBarMobileView.fromContext(mContext, state.slot); view.setSlot(state.slot); view.applyMobileState(state); view.setStaticDrawableColor(mColor); Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java +1 −2 Original line number Diff line number Diff line Loading @@ -296,8 +296,7 @@ public interface StatusBarIconController { } private StatusBarMobileView onCreateStatusBarMobileView(String slot) { StatusBarMobileView view = StatusBarMobileView.fromContext(mContext); view.setSlot(slot); StatusBarMobileView view = StatusBarMobileView.fromContext(mContext, slot); return view; } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusIconContainer.java +6 −5 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout { private static final String TAG = "StatusIconContainer"; private static final boolean DEBUG = false; private static final boolean DEBUG_OVERFLOW = false; // Max 5 status icons including battery // Max 8 status icons including battery private static final int MAX_ICONS = 7; private static final int MAX_DOTS = 1; Loading Loading @@ -152,7 +152,7 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout { int visibleCount = mMeasureViews.size(); int maxVisible = visibleCount <= MAX_ICONS ? MAX_ICONS : MAX_ICONS - 1; int totalWidth = getPaddingStart() + getPaddingEnd(); int totalWidth = mPaddingLeft + mPaddingRight; boolean trackWidth = true; // Measure all children so that they report the correct width Loading Loading @@ -208,8 +208,8 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout { */ private void calculateIconTranslations() { mLayoutStates.clear(); float width = getWidth() - getPaddingEnd(); float translationX = width; float width = getWidth(); float translationX = width - getPaddingEnd(); float contentStart = getPaddingStart(); int childCount = getChildCount(); // Underflow === don't show content until that index Loading Loading @@ -344,10 +344,11 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout { animate = true; } icon.setVisibleState(visibleState); if (animate) { animateTo(view, animationProperties); icon.setVisibleState(visibleState); } else { icon.setVisibleState(visibleState); super.applyToView(view); } Loading