Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java +2 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue public static final String TAG = "CollapsedStatusBarFragment"; private static final String EXTRA_PANEL_STATE = "panel_state"; public static final String STATUS_BAR_ICON_MANAGER_TAG = "status_bar_icon_manager"; public static final int FADE_IN_DURATION = 320; public static final int FADE_IN_DELAY = 50; private PhoneStatusBarView mStatusBar; Loading Loading @@ -94,6 +95,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue mStatusBar.go(savedInstanceState.getInt(EXTRA_PANEL_STATE)); } mDarkIconManager = new DarkIconManager(view.findViewById(R.id.statusIcons)); mDarkIconManager.setShouldLog(true); Dependency.get(StatusBarIconController.class).addIconGroup(mDarkIconManager); mSystemIconArea = mStatusBar.findViewById(R.id.system_icon_area); mClockView = mStatusBar.findViewById(R.id.clock); Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java +32 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.statusbar.phone; import android.graphics.Rect; import android.graphics.drawable.Icon; import android.os.Bundle; import android.os.UserHandle; Loading @@ -25,21 +26,27 @@ import android.view.ViewGroup; import android.widget.LinearLayout; import com.android.internal.statusbar.StatusBarIcon; import com.android.settingslib.Utils; import com.android.systemui.DemoMode; import com.android.systemui.R; import com.android.systemui.statusbar.StatusBarIconView; import com.android.systemui.statusbar.policy.DarkIconDispatcher; import com.android.systemui.statusbar.policy.DarkIconDispatcher.DarkReceiver; import com.android.systemui.statusbar.policy.LocationControllerImpl; import com.android.systemui.util.leak.LeakDetector; public class DemoStatusIcons extends LinearLayout implements DemoMode { public class DemoStatusIcons extends StatusIconContainer implements DemoMode, DarkReceiver { private final LinearLayout mStatusIcons; private final int mIconSize; private boolean mDemoMode; private int mColor; public DemoStatusIcons(LinearLayout statusIcons, int iconSize) { super(statusIcons.getContext()); mStatusIcons = statusIcons; mIconSize = iconSize; mColor = DarkIconDispatcher.DEFAULT_ICON_TINT; setLayoutParams(mStatusIcons.getLayoutParams()); setOrientation(mStatusIcons.getOrientation()); Loading @@ -48,6 +55,22 @@ public class DemoStatusIcons extends LinearLayout implements DemoMode { p.addView(this, p.indexOfChild(mStatusIcons)); } public void remove() { ((ViewGroup) getParent()).removeView(this); } public void setColor(int color) { mColor = color; updateColors(); } private void updateColors() { for (int i = 0; i < getChildCount(); i++) { StatusBarIconView child = (StatusBarIconView) getChildAt(i); child.setStaticDrawableColor(mColor); } } @Override public void dispatchDemoCommand(String command, Bundle args) { if (!mDemoMode && command.equals(COMMAND_ENTER)) { Loading Loading @@ -136,6 +159,7 @@ public class DemoStatusIcons extends LinearLayout implements DemoMode { break; } else { StatusBarIcon icon = v.getStatusBarIcon(); icon.visible = true; icon.icon = Icon.createWithResource(icon.icon.getResPackage(), iconId); v.set(icon); v.updateDrawable(); Loading @@ -150,9 +174,16 @@ public class DemoStatusIcons extends LinearLayout implements DemoMode { return; } StatusBarIcon icon = new StatusBarIcon(iconPkg, UserHandle.SYSTEM, iconId, 0, 0, "Demo"); icon.visible = true; StatusBarIconView v = new StatusBarIconView(getContext(), null, null); v.setTag(slot); v.set(icon); v.setStaticDrawableColor(mColor); addView(v, 0, new LinearLayout.LayoutParams(mIconSize, mIconSize)); } @Override public void onDarkChanged(Rect area, float darkIntensity, int tint) { setColor(DarkIconDispatcher.getTint(area, mStatusIcons, tint)); } } packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java +72 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ import static android.app.StatusBarManager.DISABLE2_SYSTEM_ICONS; import static android.app.StatusBarManager.DISABLE_NONE; import android.content.Context; import android.os.Bundle; import android.support.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.ArraySet; Loading @@ -29,6 +30,7 @@ import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; import com.android.internal.statusbar.StatusBarIcon; import com.android.systemui.DemoMode; import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.statusbar.StatusBarIconView; Loading Loading @@ -109,6 +111,20 @@ public interface StatusBarIconController { super.onSetIcon(viewIndex, icon); mDarkIconDispatcher.applyDark((ImageView) mGroup.getChildAt(viewIndex)); } @Override protected DemoStatusIcons createDemoStatusIcons() { DemoStatusIcons icons = super.createDemoStatusIcons(); mDarkIconDispatcher.addDarkReceiver(icons); return icons; } @Override protected void exitDemoMode() { mDarkIconDispatcher.removeDarkReceiver(mDemoStatusIcons); super.exitDemoMode(); } } public static class TintedIconManager extends IconManager { Loading @@ -134,15 +150,28 @@ public interface StatusBarIconController { } } } @Override protected DemoStatusIcons createDemoStatusIcons() { DemoStatusIcons icons = super.createDemoStatusIcons(); icons.setColor(mColor); return icons; } } /** * Turns info from StatusBarIconController into ImageViews in a ViewGroup. */ public static class IconManager { public static class IconManager implements DemoMode { protected final ViewGroup mGroup; protected final Context mContext; protected final int mIconSize; // Whether or not these icons show up in dumpsys protected boolean mShouldLog = false; // Enables SystemUI demo mode to take effect in this group protected boolean mDemoable = true; protected DemoStatusIcons mDemoStatusIcons; public IconManager(ViewGroup group) { mGroup = group; Loading @@ -159,6 +188,22 @@ public interface StatusBarIconController { } } public boolean isDemoable() { return mDemoable; } public void setIsDemoable(boolean demoable) { mDemoable = demoable; } public void setShouldLog(boolean should) { mShouldLog = should; } public boolean shouldLog() { return mShouldLog; } protected void onIconAdded(int index, String slot, boolean blocked, StatusBarIcon icon) { addIcon(index, slot, blocked, icon); Loading Loading @@ -218,5 +263,31 @@ public interface StatusBarIconController { StatusBarIconView view = (StatusBarIconView) mGroup.getChildAt(viewIndex); view.set(icon); } @Override public void dispatchDemoCommand(String command, Bundle args) { if (!mDemoable) { return; } if (mDemoStatusIcons != null && command.equals(COMMAND_EXIT)) { mDemoStatusIcons.dispatchDemoCommand(command, args); exitDemoMode(); } else { if (mDemoStatusIcons == null) { mDemoStatusIcons = createDemoStatusIcons(); } mDemoStatusIcons.dispatchDemoCommand(command, args); } } protected void exitDemoMode() { mDemoStatusIcons.remove(); mDemoStatusIcons = null; } protected DemoStatusIcons createDemoStatusIcons() { return new DemoStatusIcons((LinearLayout) mGroup, mIconSize); } } } packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java +20 −14 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; import static com.android.systemui.statusbar.phone.CollapsedStatusBarFragment.STATUS_BAR_ICON_MANAGER_TAG; /** * Receives the callbacks from CommandQueue related to icons and tracks the state of * all the icons. Dispatches this state to any IconManagers that are currently Loading @@ -48,6 +50,7 @@ import java.util.ArrayList; */ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tunable, ConfigurationListener, Dumpable, CommandQueue.Callbacks, StatusBarIconController { private static final String TAG = "StatusBarIconController"; private final ArrayList<IconManager> mIconGroups = new ArrayList<>(); private final ArraySet<String> mIconBlacklist = new ArraySet<>(); Loading @@ -55,6 +58,7 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu private Context mContext; private DemoStatusIcons mDemoStatusIcons; private IconManager mStatusBarIconManager; public StatusBarIconControllerImpl(Context context) { super(context.getResources().getStringArray( Loading Loading @@ -197,26 +201,28 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu @Override public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { // TODO: Dump info about all icon groups? ViewGroup statusIcons = mIconGroups.get(0).mGroup; int N = statusIcons.getChildCount(); pw.println(TAG + " state:"); for (IconManager manager : mIconGroups) { if (manager.shouldLog()) { ViewGroup group = manager.mGroup; int N = group.getChildCount(); pw.println(" icon views: " + N); for (int i = 0; i < N; i++) { StatusBarIconView ic = (StatusBarIconView) statusIcons.getChildAt(i); StatusBarIconView ic = (StatusBarIconView) group.getChildAt(i); pw.println(" [" + i + "] icon=" + ic); } } } super.dump(pw); } public void dispatchDemoCommand(String command, Bundle args) { if (mDemoStatusIcons == null) { // TODO: Rework how we handle demo mode. int iconSize = mContext.getResources().getDimensionPixelSize( com.android.internal.R.dimen.status_bar_icon_size); mDemoStatusIcons = new DemoStatusIcons((LinearLayout) mIconGroups.get(0).mGroup, iconSize); } mDemoStatusIcons.dispatchDemoCommand(command, args); for (IconManager manager : mIconGroups) { if (manager.isDemoable()) { manager.dispatchDemoCommand(command, args); } } } @Override Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconList.java +1 −0 Original line number Diff line number Diff line Loading @@ -77,6 +77,7 @@ public class StatusBarIconList { } public void dump(PrintWriter pw) { pw.println("StatusBarIconList state:"); final int N = mSlots.size(); pw.println(" icon slots: " + N); for (int i=0; i<N; i++) { Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java +2 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue public static final String TAG = "CollapsedStatusBarFragment"; private static final String EXTRA_PANEL_STATE = "panel_state"; public static final String STATUS_BAR_ICON_MANAGER_TAG = "status_bar_icon_manager"; public static final int FADE_IN_DURATION = 320; public static final int FADE_IN_DELAY = 50; private PhoneStatusBarView mStatusBar; Loading Loading @@ -94,6 +95,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue mStatusBar.go(savedInstanceState.getInt(EXTRA_PANEL_STATE)); } mDarkIconManager = new DarkIconManager(view.findViewById(R.id.statusIcons)); mDarkIconManager.setShouldLog(true); Dependency.get(StatusBarIconController.class).addIconGroup(mDarkIconManager); mSystemIconArea = mStatusBar.findViewById(R.id.system_icon_area); mClockView = mStatusBar.findViewById(R.id.clock); Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java +32 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.statusbar.phone; import android.graphics.Rect; import android.graphics.drawable.Icon; import android.os.Bundle; import android.os.UserHandle; Loading @@ -25,21 +26,27 @@ import android.view.ViewGroup; import android.widget.LinearLayout; import com.android.internal.statusbar.StatusBarIcon; import com.android.settingslib.Utils; import com.android.systemui.DemoMode; import com.android.systemui.R; import com.android.systemui.statusbar.StatusBarIconView; import com.android.systemui.statusbar.policy.DarkIconDispatcher; import com.android.systemui.statusbar.policy.DarkIconDispatcher.DarkReceiver; import com.android.systemui.statusbar.policy.LocationControllerImpl; import com.android.systemui.util.leak.LeakDetector; public class DemoStatusIcons extends LinearLayout implements DemoMode { public class DemoStatusIcons extends StatusIconContainer implements DemoMode, DarkReceiver { private final LinearLayout mStatusIcons; private final int mIconSize; private boolean mDemoMode; private int mColor; public DemoStatusIcons(LinearLayout statusIcons, int iconSize) { super(statusIcons.getContext()); mStatusIcons = statusIcons; mIconSize = iconSize; mColor = DarkIconDispatcher.DEFAULT_ICON_TINT; setLayoutParams(mStatusIcons.getLayoutParams()); setOrientation(mStatusIcons.getOrientation()); Loading @@ -48,6 +55,22 @@ public class DemoStatusIcons extends LinearLayout implements DemoMode { p.addView(this, p.indexOfChild(mStatusIcons)); } public void remove() { ((ViewGroup) getParent()).removeView(this); } public void setColor(int color) { mColor = color; updateColors(); } private void updateColors() { for (int i = 0; i < getChildCount(); i++) { StatusBarIconView child = (StatusBarIconView) getChildAt(i); child.setStaticDrawableColor(mColor); } } @Override public void dispatchDemoCommand(String command, Bundle args) { if (!mDemoMode && command.equals(COMMAND_ENTER)) { Loading Loading @@ -136,6 +159,7 @@ public class DemoStatusIcons extends LinearLayout implements DemoMode { break; } else { StatusBarIcon icon = v.getStatusBarIcon(); icon.visible = true; icon.icon = Icon.createWithResource(icon.icon.getResPackage(), iconId); v.set(icon); v.updateDrawable(); Loading @@ -150,9 +174,16 @@ public class DemoStatusIcons extends LinearLayout implements DemoMode { return; } StatusBarIcon icon = new StatusBarIcon(iconPkg, UserHandle.SYSTEM, iconId, 0, 0, "Demo"); icon.visible = true; StatusBarIconView v = new StatusBarIconView(getContext(), null, null); v.setTag(slot); v.set(icon); v.setStaticDrawableColor(mColor); addView(v, 0, new LinearLayout.LayoutParams(mIconSize, mIconSize)); } @Override public void onDarkChanged(Rect area, float darkIntensity, int tint) { setColor(DarkIconDispatcher.getTint(area, mStatusIcons, tint)); } }
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java +72 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ import static android.app.StatusBarManager.DISABLE2_SYSTEM_ICONS; import static android.app.StatusBarManager.DISABLE_NONE; import android.content.Context; import android.os.Bundle; import android.support.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.ArraySet; Loading @@ -29,6 +30,7 @@ import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; import com.android.internal.statusbar.StatusBarIcon; import com.android.systemui.DemoMode; import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.statusbar.StatusBarIconView; Loading Loading @@ -109,6 +111,20 @@ public interface StatusBarIconController { super.onSetIcon(viewIndex, icon); mDarkIconDispatcher.applyDark((ImageView) mGroup.getChildAt(viewIndex)); } @Override protected DemoStatusIcons createDemoStatusIcons() { DemoStatusIcons icons = super.createDemoStatusIcons(); mDarkIconDispatcher.addDarkReceiver(icons); return icons; } @Override protected void exitDemoMode() { mDarkIconDispatcher.removeDarkReceiver(mDemoStatusIcons); super.exitDemoMode(); } } public static class TintedIconManager extends IconManager { Loading @@ -134,15 +150,28 @@ public interface StatusBarIconController { } } } @Override protected DemoStatusIcons createDemoStatusIcons() { DemoStatusIcons icons = super.createDemoStatusIcons(); icons.setColor(mColor); return icons; } } /** * Turns info from StatusBarIconController into ImageViews in a ViewGroup. */ public static class IconManager { public static class IconManager implements DemoMode { protected final ViewGroup mGroup; protected final Context mContext; protected final int mIconSize; // Whether or not these icons show up in dumpsys protected boolean mShouldLog = false; // Enables SystemUI demo mode to take effect in this group protected boolean mDemoable = true; protected DemoStatusIcons mDemoStatusIcons; public IconManager(ViewGroup group) { mGroup = group; Loading @@ -159,6 +188,22 @@ public interface StatusBarIconController { } } public boolean isDemoable() { return mDemoable; } public void setIsDemoable(boolean demoable) { mDemoable = demoable; } public void setShouldLog(boolean should) { mShouldLog = should; } public boolean shouldLog() { return mShouldLog; } protected void onIconAdded(int index, String slot, boolean blocked, StatusBarIcon icon) { addIcon(index, slot, blocked, icon); Loading Loading @@ -218,5 +263,31 @@ public interface StatusBarIconController { StatusBarIconView view = (StatusBarIconView) mGroup.getChildAt(viewIndex); view.set(icon); } @Override public void dispatchDemoCommand(String command, Bundle args) { if (!mDemoable) { return; } if (mDemoStatusIcons != null && command.equals(COMMAND_EXIT)) { mDemoStatusIcons.dispatchDemoCommand(command, args); exitDemoMode(); } else { if (mDemoStatusIcons == null) { mDemoStatusIcons = createDemoStatusIcons(); } mDemoStatusIcons.dispatchDemoCommand(command, args); } } protected void exitDemoMode() { mDemoStatusIcons.remove(); mDemoStatusIcons = null; } protected DemoStatusIcons createDemoStatusIcons() { return new DemoStatusIcons((LinearLayout) mGroup, mIconSize); } } }
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java +20 −14 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; import static com.android.systemui.statusbar.phone.CollapsedStatusBarFragment.STATUS_BAR_ICON_MANAGER_TAG; /** * Receives the callbacks from CommandQueue related to icons and tracks the state of * all the icons. Dispatches this state to any IconManagers that are currently Loading @@ -48,6 +50,7 @@ import java.util.ArrayList; */ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tunable, ConfigurationListener, Dumpable, CommandQueue.Callbacks, StatusBarIconController { private static final String TAG = "StatusBarIconController"; private final ArrayList<IconManager> mIconGroups = new ArrayList<>(); private final ArraySet<String> mIconBlacklist = new ArraySet<>(); Loading @@ -55,6 +58,7 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu private Context mContext; private DemoStatusIcons mDemoStatusIcons; private IconManager mStatusBarIconManager; public StatusBarIconControllerImpl(Context context) { super(context.getResources().getStringArray( Loading Loading @@ -197,26 +201,28 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu @Override public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { // TODO: Dump info about all icon groups? ViewGroup statusIcons = mIconGroups.get(0).mGroup; int N = statusIcons.getChildCount(); pw.println(TAG + " state:"); for (IconManager manager : mIconGroups) { if (manager.shouldLog()) { ViewGroup group = manager.mGroup; int N = group.getChildCount(); pw.println(" icon views: " + N); for (int i = 0; i < N; i++) { StatusBarIconView ic = (StatusBarIconView) statusIcons.getChildAt(i); StatusBarIconView ic = (StatusBarIconView) group.getChildAt(i); pw.println(" [" + i + "] icon=" + ic); } } } super.dump(pw); } public void dispatchDemoCommand(String command, Bundle args) { if (mDemoStatusIcons == null) { // TODO: Rework how we handle demo mode. int iconSize = mContext.getResources().getDimensionPixelSize( com.android.internal.R.dimen.status_bar_icon_size); mDemoStatusIcons = new DemoStatusIcons((LinearLayout) mIconGroups.get(0).mGroup, iconSize); } mDemoStatusIcons.dispatchDemoCommand(command, args); for (IconManager manager : mIconGroups) { if (manager.isDemoable()) { manager.dispatchDemoCommand(command, args); } } } @Override Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconList.java +1 −0 Original line number Diff line number Diff line Loading @@ -77,6 +77,7 @@ public class StatusBarIconList { } public void dump(PrintWriter pw) { pw.println("StatusBarIconList state:"); final int N = mSlots.size(); pw.println(" icon slots: " + N); for (int i=0; i<N; i++) { Loading