Loading packages/SystemUI/src/com/android/systemui/statusbar/events/PrivacyDotViewController.kt +23 −3 Original line number Diff line number Diff line Loading @@ -29,6 +29,8 @@ import com.android.systemui.animation.Interpolators import com.android.systemui.R import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.statusbar.phone.StatusBarLocationPublisher import com.android.systemui.statusbar.phone.StatusBarMarginUpdatedListener import java.lang.IllegalStateException import java.util.concurrent.Executor Loading @@ -51,8 +53,9 @@ import javax.inject.Inject @SysUISingleton class PrivacyDotViewController @Inject constructor( @Main val mainExecutor: Executor, val animationScheduler: SystemStatusAnimationScheduler @Main private val mainExecutor: Executor, private val locationPublisher: StatusBarLocationPublisher, private val animationScheduler: SystemStatusAnimationScheduler ) { private var rotation = 0 private var leftSize = 0 Loading Loading @@ -80,12 +83,21 @@ class PrivacyDotViewController @Inject constructor( private val views: Sequence<View> get() = if (!this::tl.isInitialized) sequenceOf() else sequenceOf(tl, tr, br, bl) init { locationPublisher.addCallback(object : StatusBarMarginUpdatedListener { override fun onStatusBarMarginUpdated(marginLeft: Int, marginRight: Int) { setStatusBarMargins(marginLeft, marginRight) } }) } fun setUiExecutor(e: Executor) { uiExecutor = e } @UiThread fun updateRotation(rot: Int) { dlog("updateRotation: ") if (rot == rotation) { return } Loading Loading @@ -248,7 +260,7 @@ class PrivacyDotViewController @Inject constructor( * @param left the space between the status bar contents and the left side of the screen * @param right space between the status bar contents and the right side of the screen */ fun setStatusBarMargins(left: Int, right: Int) { private fun setStatusBarMargins(left: Int, right: Int) { leftSize = left rightSize = right Loading @@ -262,6 +274,7 @@ class PrivacyDotViewController @Inject constructor( } private fun doUpdates(rot: Boolean, height: Boolean, width: Boolean) { dlog("doUpdates: ") var newDesignatedCorner: View? = null if (rot) { Loading Loading @@ -324,12 +337,19 @@ class PrivacyDotViewController @Inject constructor( } } private fun dlog(s: String) { if (DEBUG) { Log.d(TAG, s) } } const val TOP_LEFT = 0 const val TOP_RIGHT = 1 const val BOTTOM_RIGHT = 2 const val BOTTOM_LEFT = 3 private const val DURATION = 160L private const val TAG = "PrivacyDotViewController" private const val DEBUG = false private fun Int.toGravity(): Int { return when (this) { Loading packages/SystemUI/src/com/android/systemui/statusbar/events/SystemEventChipAnimationController.kt +16 −6 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.widget.FrameLayout import com.android.systemui.R import com.android.systemui.statusbar.SuperStatusBarViewFactory import com.android.systemui.statusbar.phone.StatusBarLocationPublisher import com.android.systemui.statusbar.phone.StatusBarWindowController import com.android.systemui.statusbar.phone.StatusBarWindowView Loading @@ -39,7 +40,8 @@ import javax.inject.Inject class SystemEventChipAnimationController @Inject constructor( private val context: Context, private val statusBarViewFactory: SuperStatusBarViewFactory, private val statusBarWindowController: StatusBarWindowController private val statusBarWindowController: StatusBarWindowController, private val locationPublisher: StatusBarLocationPublisher ) : SystemStatusChipAnimationCallback { var showPersistentDot = false set(value) { Loading @@ -64,13 +66,15 @@ class SystemEventChipAnimationController @Inject constructor( if (state == ANIMATING_IN) { currentAnimatedView = viewCreator(context) animationWindowView.addView(currentAnimatedView, layoutParamsDefault) animationWindowView.addView(currentAnimatedView, layoutParamsDefault()) // We are animating IN; chip comes in from View.END currentAnimatedView?.apply { translationX = width.toFloat() val translation = width.toFloat() translationX = if (isLayoutRtl) -translation else translation alpha = 0f visibility = View.VISIBLE setPadding(locationPublisher.marginLeft, 0, locationPublisher.marginRight, 0) } } else { // We are animating away Loading Loading @@ -109,7 +113,7 @@ class SystemEventChipAnimationController @Inject constructor( val w = width val translation = (1 - amt) * w translationX = translation translationX = if (isLayoutRtl) -translation else translation } } Loading @@ -131,7 +135,13 @@ class SystemEventChipAnimationController @Inject constructor( statusBarWindowView.addView(animationWindowView, lp) } private val layoutParamsDefault = FrameLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT).also { private fun start() = if (animationWindowView.isLayoutRtl) right() else left() private fun right() = locationPublisher.marginRight private fun left() = locationPublisher.marginLeft private fun layoutParamsDefault(): FrameLayout.LayoutParams = FrameLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT).also { it.gravity = Gravity.END or Gravity.CENTER_VERTICAL it.marginStart = start() } } packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt +1 −2 Original line number Diff line number Diff line Loading @@ -127,7 +127,6 @@ class SystemStatusAnimationScheduler @Inject constructor( } private fun isTooEarly(): Boolean { Log.d(TAG, "time=> ${systemClock.uptimeMillis() - Process.getStartUptimeMillis()}") return systemClock.uptimeMillis() - Process.getStartUptimeMillis() < MIN_UPTIME } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java +4 −5 Original line number Diff line number Diff line Loading @@ -43,7 +43,6 @@ import com.android.systemui.animation.Interpolators; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.events.PrivacyDotViewController; import com.android.systemui.statusbar.events.SystemStatusAnimationCallback; import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler; import com.android.systemui.statusbar.phone.StatusBarIconController.DarkIconManager; Loading Loading @@ -92,7 +91,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue private CommandQueue mCommandQueue; private OngoingCallController mOngoingCallController; private final SystemStatusAnimationScheduler mAnimationScheduler; private final PrivacyDotViewController mDotViewController; private final StatusBarLocationPublisher mLocationPublisher; private NotificationIconAreaController mNotificationIconAreaController; private List<String> mBlockedIcons = new ArrayList<>(); Loading Loading @@ -120,12 +119,12 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue public CollapsedStatusBarFragment( OngoingCallController ongoingCallController, SystemStatusAnimationScheduler animationScheduler, PrivacyDotViewController dotViewController, StatusBarLocationPublisher locationPublisher, NotificationIconAreaController notificationIconAreaController ) { mOngoingCallController = ongoingCallController; mAnimationScheduler = animationScheduler; mDotViewController = dotViewController; mLocationPublisher = locationPublisher; mNotificationIconAreaController = notificationIconAreaController; } Loading Loading @@ -540,7 +539,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue int leftMargin = left - mStatusBar.getLeft(); int rightMargin = mStatusBar.getRight() - right; mDotViewController.setStatusBarMargins(leftMargin, rightMargin); mLocationPublisher.updateStatusBarMargin(leftMargin, rightMargin); } // Listen for view end changes of PhoneStatusBarView and publish that to the privacy dot Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +4 −5 Original line number Diff line number Diff line Loading @@ -209,7 +209,6 @@ import com.android.systemui.statusbar.SuperStatusBarViewFactory; import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.VibratorHelper; import com.android.systemui.statusbar.charging.WiredChargingRippleController; import com.android.systemui.statusbar.events.PrivacyDotViewController; import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler; import com.android.systemui.statusbar.notification.DynamicPrivacyController; import com.android.systemui.statusbar.notification.NotificationActivityStarter; Loading Loading @@ -429,7 +428,7 @@ public class StatusBar extends SystemUI implements DemoMode, private NotificationsController mNotificationsController; private final OngoingCallController mOngoingCallController; private final SystemStatusAnimationScheduler mAnimationScheduler; private final PrivacyDotViewController mDotViewController; private final StatusBarLocationPublisher mStatusBarLocationPublisher; // expanded notifications // the sliding/resizing panel within the notification window Loading Loading @@ -799,7 +798,7 @@ public class StatusBar extends SystemUI implements DemoMode, WiredChargingRippleController chargingRippleAnimationController, OngoingCallController ongoingCallController, SystemStatusAnimationScheduler animationScheduler, PrivacyDotViewController dotViewController, StatusBarLocationPublisher locationPublisher, FeatureFlags featureFlags, KeyguardUnlockAnimationController keyguardUnlockAnimationController) { super(context); Loading Loading @@ -882,7 +881,7 @@ public class StatusBar extends SystemUI implements DemoMode, mChargingRippleAnimationController = chargingRippleAnimationController; mOngoingCallController = ongoingCallController; mAnimationScheduler = animationScheduler; mDotViewController = dotViewController; mStatusBarLocationPublisher = locationPublisher; mFeatureFlags = featureFlags; mExpansionChangedListeners = new ArrayList<>(); Loading Loading @@ -1175,7 +1174,7 @@ public class StatusBar extends SystemUI implements DemoMode, new CollapsedStatusBarFragment( mOngoingCallController, mAnimationScheduler, mDotViewController, mStatusBarLocationPublisher, mNotificationIconAreaController), CollapsedStatusBarFragment.TAG) .commit(); Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/events/PrivacyDotViewController.kt +23 −3 Original line number Diff line number Diff line Loading @@ -29,6 +29,8 @@ import com.android.systemui.animation.Interpolators import com.android.systemui.R import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.statusbar.phone.StatusBarLocationPublisher import com.android.systemui.statusbar.phone.StatusBarMarginUpdatedListener import java.lang.IllegalStateException import java.util.concurrent.Executor Loading @@ -51,8 +53,9 @@ import javax.inject.Inject @SysUISingleton class PrivacyDotViewController @Inject constructor( @Main val mainExecutor: Executor, val animationScheduler: SystemStatusAnimationScheduler @Main private val mainExecutor: Executor, private val locationPublisher: StatusBarLocationPublisher, private val animationScheduler: SystemStatusAnimationScheduler ) { private var rotation = 0 private var leftSize = 0 Loading Loading @@ -80,12 +83,21 @@ class PrivacyDotViewController @Inject constructor( private val views: Sequence<View> get() = if (!this::tl.isInitialized) sequenceOf() else sequenceOf(tl, tr, br, bl) init { locationPublisher.addCallback(object : StatusBarMarginUpdatedListener { override fun onStatusBarMarginUpdated(marginLeft: Int, marginRight: Int) { setStatusBarMargins(marginLeft, marginRight) } }) } fun setUiExecutor(e: Executor) { uiExecutor = e } @UiThread fun updateRotation(rot: Int) { dlog("updateRotation: ") if (rot == rotation) { return } Loading Loading @@ -248,7 +260,7 @@ class PrivacyDotViewController @Inject constructor( * @param left the space between the status bar contents and the left side of the screen * @param right space between the status bar contents and the right side of the screen */ fun setStatusBarMargins(left: Int, right: Int) { private fun setStatusBarMargins(left: Int, right: Int) { leftSize = left rightSize = right Loading @@ -262,6 +274,7 @@ class PrivacyDotViewController @Inject constructor( } private fun doUpdates(rot: Boolean, height: Boolean, width: Boolean) { dlog("doUpdates: ") var newDesignatedCorner: View? = null if (rot) { Loading Loading @@ -324,12 +337,19 @@ class PrivacyDotViewController @Inject constructor( } } private fun dlog(s: String) { if (DEBUG) { Log.d(TAG, s) } } const val TOP_LEFT = 0 const val TOP_RIGHT = 1 const val BOTTOM_RIGHT = 2 const val BOTTOM_LEFT = 3 private const val DURATION = 160L private const val TAG = "PrivacyDotViewController" private const val DEBUG = false private fun Int.toGravity(): Int { return when (this) { Loading
packages/SystemUI/src/com/android/systemui/statusbar/events/SystemEventChipAnimationController.kt +16 −6 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.widget.FrameLayout import com.android.systemui.R import com.android.systemui.statusbar.SuperStatusBarViewFactory import com.android.systemui.statusbar.phone.StatusBarLocationPublisher import com.android.systemui.statusbar.phone.StatusBarWindowController import com.android.systemui.statusbar.phone.StatusBarWindowView Loading @@ -39,7 +40,8 @@ import javax.inject.Inject class SystemEventChipAnimationController @Inject constructor( private val context: Context, private val statusBarViewFactory: SuperStatusBarViewFactory, private val statusBarWindowController: StatusBarWindowController private val statusBarWindowController: StatusBarWindowController, private val locationPublisher: StatusBarLocationPublisher ) : SystemStatusChipAnimationCallback { var showPersistentDot = false set(value) { Loading @@ -64,13 +66,15 @@ class SystemEventChipAnimationController @Inject constructor( if (state == ANIMATING_IN) { currentAnimatedView = viewCreator(context) animationWindowView.addView(currentAnimatedView, layoutParamsDefault) animationWindowView.addView(currentAnimatedView, layoutParamsDefault()) // We are animating IN; chip comes in from View.END currentAnimatedView?.apply { translationX = width.toFloat() val translation = width.toFloat() translationX = if (isLayoutRtl) -translation else translation alpha = 0f visibility = View.VISIBLE setPadding(locationPublisher.marginLeft, 0, locationPublisher.marginRight, 0) } } else { // We are animating away Loading Loading @@ -109,7 +113,7 @@ class SystemEventChipAnimationController @Inject constructor( val w = width val translation = (1 - amt) * w translationX = translation translationX = if (isLayoutRtl) -translation else translation } } Loading @@ -131,7 +135,13 @@ class SystemEventChipAnimationController @Inject constructor( statusBarWindowView.addView(animationWindowView, lp) } private val layoutParamsDefault = FrameLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT).also { private fun start() = if (animationWindowView.isLayoutRtl) right() else left() private fun right() = locationPublisher.marginRight private fun left() = locationPublisher.marginLeft private fun layoutParamsDefault(): FrameLayout.LayoutParams = FrameLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT).also { it.gravity = Gravity.END or Gravity.CENTER_VERTICAL it.marginStart = start() } }
packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt +1 −2 Original line number Diff line number Diff line Loading @@ -127,7 +127,6 @@ class SystemStatusAnimationScheduler @Inject constructor( } private fun isTooEarly(): Boolean { Log.d(TAG, "time=> ${systemClock.uptimeMillis() - Process.getStartUptimeMillis()}") return systemClock.uptimeMillis() - Process.getStartUptimeMillis() < MIN_UPTIME } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java +4 −5 Original line number Diff line number Diff line Loading @@ -43,7 +43,6 @@ import com.android.systemui.animation.Interpolators; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.events.PrivacyDotViewController; import com.android.systemui.statusbar.events.SystemStatusAnimationCallback; import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler; import com.android.systemui.statusbar.phone.StatusBarIconController.DarkIconManager; Loading Loading @@ -92,7 +91,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue private CommandQueue mCommandQueue; private OngoingCallController mOngoingCallController; private final SystemStatusAnimationScheduler mAnimationScheduler; private final PrivacyDotViewController mDotViewController; private final StatusBarLocationPublisher mLocationPublisher; private NotificationIconAreaController mNotificationIconAreaController; private List<String> mBlockedIcons = new ArrayList<>(); Loading Loading @@ -120,12 +119,12 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue public CollapsedStatusBarFragment( OngoingCallController ongoingCallController, SystemStatusAnimationScheduler animationScheduler, PrivacyDotViewController dotViewController, StatusBarLocationPublisher locationPublisher, NotificationIconAreaController notificationIconAreaController ) { mOngoingCallController = ongoingCallController; mAnimationScheduler = animationScheduler; mDotViewController = dotViewController; mLocationPublisher = locationPublisher; mNotificationIconAreaController = notificationIconAreaController; } Loading Loading @@ -540,7 +539,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue int leftMargin = left - mStatusBar.getLeft(); int rightMargin = mStatusBar.getRight() - right; mDotViewController.setStatusBarMargins(leftMargin, rightMargin); mLocationPublisher.updateStatusBarMargin(leftMargin, rightMargin); } // Listen for view end changes of PhoneStatusBarView and publish that to the privacy dot Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +4 −5 Original line number Diff line number Diff line Loading @@ -209,7 +209,6 @@ import com.android.systemui.statusbar.SuperStatusBarViewFactory; import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.VibratorHelper; import com.android.systemui.statusbar.charging.WiredChargingRippleController; import com.android.systemui.statusbar.events.PrivacyDotViewController; import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler; import com.android.systemui.statusbar.notification.DynamicPrivacyController; import com.android.systemui.statusbar.notification.NotificationActivityStarter; Loading Loading @@ -429,7 +428,7 @@ public class StatusBar extends SystemUI implements DemoMode, private NotificationsController mNotificationsController; private final OngoingCallController mOngoingCallController; private final SystemStatusAnimationScheduler mAnimationScheduler; private final PrivacyDotViewController mDotViewController; private final StatusBarLocationPublisher mStatusBarLocationPublisher; // expanded notifications // the sliding/resizing panel within the notification window Loading Loading @@ -799,7 +798,7 @@ public class StatusBar extends SystemUI implements DemoMode, WiredChargingRippleController chargingRippleAnimationController, OngoingCallController ongoingCallController, SystemStatusAnimationScheduler animationScheduler, PrivacyDotViewController dotViewController, StatusBarLocationPublisher locationPublisher, FeatureFlags featureFlags, KeyguardUnlockAnimationController keyguardUnlockAnimationController) { super(context); Loading Loading @@ -882,7 +881,7 @@ public class StatusBar extends SystemUI implements DemoMode, mChargingRippleAnimationController = chargingRippleAnimationController; mOngoingCallController = ongoingCallController; mAnimationScheduler = animationScheduler; mDotViewController = dotViewController; mStatusBarLocationPublisher = locationPublisher; mFeatureFlags = featureFlags; mExpansionChangedListeners = new ArrayList<>(); Loading Loading @@ -1175,7 +1174,7 @@ public class StatusBar extends SystemUI implements DemoMode, new CollapsedStatusBarFragment( mOngoingCallController, mAnimationScheduler, mDotViewController, mStatusBarLocationPublisher, mNotificationIconAreaController), CollapsedStatusBarFragment.TAG) .commit(); Loading