Merge "Tapping clock on QS launches clock app" into udc-dev
This commit is contained in:
@@ -19,11 +19,14 @@ package com.android.systemui.shade
|
||||
import android.animation.Animator
|
||||
import android.animation.AnimatorListenerAdapter
|
||||
import android.annotation.IdRes
|
||||
import android.app.PendingIntent
|
||||
import android.app.StatusBarManager
|
||||
import android.content.Intent
|
||||
import android.content.res.Configuration
|
||||
import android.os.Bundle
|
||||
import android.os.Trace
|
||||
import android.os.Trace.TRACE_TAG_APP
|
||||
import android.provider.AlarmClock
|
||||
import android.util.Pair
|
||||
import android.view.DisplayCutout
|
||||
import android.view.View
|
||||
@@ -41,6 +44,7 @@ import com.android.systemui.battery.BatteryMeterViewController
|
||||
import com.android.systemui.demomode.DemoMode
|
||||
import com.android.systemui.demomode.DemoModeController
|
||||
import com.android.systemui.dump.DumpManager
|
||||
import com.android.systemui.plugins.ActivityStarter
|
||||
import com.android.systemui.qs.ChipVisibilityListener
|
||||
import com.android.systemui.qs.HeaderPrivacyIconsController
|
||||
import com.android.systemui.shade.ShadeHeaderController.Companion.HEADER_TRANSITION_ID
|
||||
@@ -58,6 +62,7 @@ import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent.Cent
|
||||
import com.android.systemui.statusbar.phone.dagger.StatusBarViewModule.SHADE_HEADER
|
||||
import com.android.systemui.statusbar.policy.Clock
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController
|
||||
import com.android.systemui.statusbar.policy.NextAlarmController
|
||||
import com.android.systemui.statusbar.policy.VariableDateView
|
||||
import com.android.systemui.statusbar.policy.VariableDateViewController
|
||||
import com.android.systemui.util.ViewController
|
||||
@@ -91,6 +96,8 @@ constructor(
|
||||
private val combinedShadeHeadersConstraintManager: CombinedShadeHeadersConstraintManager,
|
||||
private val demoModeController: DemoModeController,
|
||||
private val qsBatteryModeController: QsBatteryModeController,
|
||||
private val nextAlarmController: NextAlarmController,
|
||||
private val activityStarter: ActivityStarter,
|
||||
) : ViewController<View>(header), Dumpable {
|
||||
|
||||
companion object {
|
||||
@@ -103,6 +110,8 @@ constructor(
|
||||
@VisibleForTesting
|
||||
internal val LARGE_SCREEN_HEADER_CONSTRAINT = R.id.large_screen_header_constraint
|
||||
|
||||
@VisibleForTesting internal val DEFAULT_CLOCK_INTENT = Intent(AlarmClock.ACTION_SHOW_ALARMS)
|
||||
|
||||
private fun Int.stateToString() =
|
||||
when (this) {
|
||||
QQS_HEADER_CONSTRAINT -> "QQS Header"
|
||||
@@ -125,6 +134,7 @@ constructor(
|
||||
private var roundedCorners = 0
|
||||
private var cutout: DisplayCutout? = null
|
||||
private var lastInsets: WindowInsets? = null
|
||||
private var nextAlarmIntent: PendingIntent? = null
|
||||
|
||||
private var qsDisabled = false
|
||||
private var visible = false
|
||||
@@ -252,6 +262,11 @@ constructor(
|
||||
}
|
||||
}
|
||||
|
||||
private val nextAlarmCallback =
|
||||
NextAlarmController.NextAlarmChangeCallback { nextAlarm ->
|
||||
nextAlarmIntent = nextAlarm?.showIntent
|
||||
}
|
||||
|
||||
override fun onInit() {
|
||||
variableDateViewControllerFactory.create(date as VariableDateView).init()
|
||||
batteryMeterViewController.init()
|
||||
@@ -286,19 +301,23 @@ constructor(
|
||||
|
||||
mShadeCarrierGroup.setPaddingRelative((v.width * v.scaleX).toInt(), 0, 0, 0)
|
||||
}
|
||||
clock.setOnClickListener { launchClockActivity() }
|
||||
|
||||
dumpManager.registerDumpable(this)
|
||||
configurationController.addCallback(configurationControllerListener)
|
||||
demoModeController.addCallback(demoModeReceiver)
|
||||
statusBarIconController.addIconGroup(iconManager)
|
||||
nextAlarmController.addCallback(nextAlarmCallback)
|
||||
}
|
||||
|
||||
override fun onViewDetached() {
|
||||
clock.setOnClickListener(null)
|
||||
privacyIconsController.chipVisibilityListener = null
|
||||
dumpManager.unregisterDumpable(this::class.java.simpleName)
|
||||
configurationController.removeCallback(configurationControllerListener)
|
||||
demoModeController.removeCallback(demoModeReceiver)
|
||||
statusBarIconController.removeIconGroup(iconManager)
|
||||
nextAlarmController.removeCallback(nextAlarmCallback)
|
||||
}
|
||||
|
||||
fun disable(state1: Int, state2: Int, animate: Boolean) {
|
||||
@@ -318,6 +337,15 @@ constructor(
|
||||
.start()
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
internal fun launchClockActivity() {
|
||||
if (nextAlarmIntent != null) {
|
||||
activityStarter.postStartActivityDismissingKeyguard(nextAlarmIntent)
|
||||
} else {
|
||||
activityStarter.postStartActivityDismissingKeyguard(DEFAULT_CLOCK_INTENT, 0 /*delay */)
|
||||
}
|
||||
}
|
||||
|
||||
private fun loadConstraints() {
|
||||
// Use resources.getXml instead of passing the resource id due to bug b/205018300
|
||||
header
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
package com.android.systemui.shade
|
||||
|
||||
import android.animation.Animator
|
||||
import android.app.AlarmManager
|
||||
import android.app.PendingIntent
|
||||
import android.app.StatusBarManager
|
||||
import android.content.Context
|
||||
import android.content.res.Resources
|
||||
@@ -40,8 +42,10 @@ import com.android.systemui.battery.BatteryMeterViewController
|
||||
import com.android.systemui.demomode.DemoMode
|
||||
import com.android.systemui.demomode.DemoModeController
|
||||
import com.android.systemui.dump.DumpManager
|
||||
import com.android.systemui.plugins.ActivityStarter
|
||||
import com.android.systemui.qs.ChipVisibilityListener
|
||||
import com.android.systemui.qs.HeaderPrivacyIconsController
|
||||
import com.android.systemui.shade.ShadeHeaderController.Companion.DEFAULT_CLOCK_INTENT
|
||||
import com.android.systemui.shade.ShadeHeaderController.Companion.LARGE_SCREEN_HEADER_CONSTRAINT
|
||||
import com.android.systemui.shade.ShadeHeaderController.Companion.QQS_HEADER_CONSTRAINT
|
||||
import com.android.systemui.shade.ShadeHeaderController.Companion.QS_HEADER_CONSTRAINT
|
||||
@@ -52,6 +56,7 @@ import com.android.systemui.statusbar.phone.StatusBarIconController
|
||||
import com.android.systemui.statusbar.phone.StatusIconContainer
|
||||
import com.android.systemui.statusbar.policy.Clock
|
||||
import com.android.systemui.statusbar.policy.FakeConfigurationController
|
||||
import com.android.systemui.statusbar.policy.NextAlarmController
|
||||
import com.android.systemui.statusbar.policy.VariableDateView
|
||||
import com.android.systemui.statusbar.policy.VariableDateViewController
|
||||
import com.android.systemui.util.mockito.any
|
||||
@@ -114,6 +119,8 @@ class ShadeHeaderControllerTest : SysuiTestCase() {
|
||||
|
||||
@Mock private lateinit var demoModeController: DemoModeController
|
||||
@Mock private lateinit var qsBatteryModeController: QsBatteryModeController
|
||||
@Mock private lateinit var nextAlarmController: NextAlarmController
|
||||
@Mock private lateinit var activityStarter: ActivityStarter
|
||||
|
||||
@JvmField @Rule val mockitoRule = MockitoJUnit.rule()
|
||||
var viewVisibility = View.GONE
|
||||
@@ -181,6 +188,8 @@ class ShadeHeaderControllerTest : SysuiTestCase() {
|
||||
combinedShadeHeadersConstraintManager,
|
||||
demoModeController,
|
||||
qsBatteryModeController,
|
||||
nextAlarmController,
|
||||
activityStarter,
|
||||
)
|
||||
whenever(view.isAttachedToWindow).thenReturn(true)
|
||||
shadeHeaderController.init()
|
||||
@@ -828,6 +837,28 @@ class ShadeHeaderControllerTest : SysuiTestCase() {
|
||||
verify(carrierGroup).setPaddingRelative(514, 0, 0, 0)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun launchClock_launchesDefaultIntentWhenNoAlarmSet() {
|
||||
shadeHeaderController.launchClockActivity()
|
||||
|
||||
verify(activityStarter).postStartActivityDismissingKeyguard(DEFAULT_CLOCK_INTENT, 0)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun launchClock_launchesNextAlarmWhenExists() {
|
||||
val pendingIntent = mock<PendingIntent>()
|
||||
val aci = AlarmManager.AlarmClockInfo(12345, pendingIntent)
|
||||
val captor =
|
||||
ArgumentCaptor.forClass(NextAlarmController.NextAlarmChangeCallback::class.java)
|
||||
|
||||
verify(nextAlarmController).addCallback(capture(captor))
|
||||
captor.value.onNextAlarmChanged(aci)
|
||||
|
||||
shadeHeaderController.launchClockActivity()
|
||||
|
||||
verify(activityStarter).postStartActivityDismissingKeyguard(pendingIntent)
|
||||
}
|
||||
|
||||
private fun View.executeLayoutChange(
|
||||
left: Int,
|
||||
top: Int,
|
||||
|
||||
Reference in New Issue
Block a user