Loading packages/SystemUI/src/com/android/systemui/topwindoweffects/TopLevelWindowEffects.kt +6 −3 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ constructor( // threshold of initial delay launchWindowEffect?.cancel() if (down) { val roundedCornerId = val roundedCornerInfo = async(context = bgContext) { squeezeEffectInteractor.getRoundedCornersResourceId() } Loading @@ -75,8 +75,9 @@ constructor( launchWindowEffect = launch { delay(initialDelay.await()) addWindow( roundedCornerId.await().top, roundedCornerId.await().bottom, roundedCornerInfo.await().topResourceId, roundedCornerInfo.await().bottomResourceId, roundedCornerInfo.await().physicalPixelDisplaySizeRatio, ) } } else { Loading @@ -91,6 +92,7 @@ constructor( private fun addWindow( @DrawableRes topRoundedCornerId: Int, @DrawableRes bottomRoundedCornerId: Int, physicalPixelDisplaySizeRatio: Float, ) { if (root == null) { root = Loading @@ -99,6 +101,7 @@ constructor( viewModelFactory = viewModelFactory, topRoundedCornerResourceId = topRoundedCornerId, bottomRoundedCornerResourceId = bottomRoundedCornerId, physicalPixelDisplaySizeRatio = physicalPixelDisplaySizeRatio, onEffectFinished = { if (root?.isAttachedToWindow == true) { windowManager.removeView(root) Loading packages/SystemUI/src/com/android/systemui/topwindoweffects/data/entity/SqueezeEffectCornerResourceId.kt→packages/SystemUI/src/com/android/systemui/topwindoweffects/data/entity/SqueezeEffectCornersInfo.kt +7 −1 Original line number Diff line number Diff line Loading @@ -16,4 +16,10 @@ package com.android.systemui.topwindoweffects.data.entity data class SqueezeEffectCornerResourceId(val top: Int, val bottom: Int) import androidx.annotation.DrawableRes data class SqueezeEffectCornersInfo( @DrawableRes val topResourceId: Int, @DrawableRes val bottomResourceId: Int, val physicalPixelDisplaySizeRatio: Float, ) packages/SystemUI/src/com/android/systemui/topwindoweffects/data/repository/SqueezeEffectRepository.kt +2 −2 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ package com.android.systemui.topwindoweffects.data.repository import com.android.systemui.topwindoweffects.data.entity.SqueezeEffectCornerResourceId import com.android.systemui.topwindoweffects.data.entity.SqueezeEffectCornersInfo import kotlinx.coroutines.flow.Flow interface SqueezeEffectRepository { Loading @@ -24,5 +24,5 @@ interface SqueezeEffectRepository { suspend fun getInvocationEffectInitialDelayMs(): Long suspend fun getRoundedCornersResourceId(): SqueezeEffectCornerResourceId suspend fun getRoundedCornersInfo(): SqueezeEffectCornersInfo } packages/SystemUI/src/com/android/systemui/topwindoweffects/data/repository/SqueezeEffectRepositoryImpl.kt +19 −5 Original line number Diff line number Diff line Loading @@ -34,7 +34,7 @@ import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.res.R import com.android.systemui.shared.Flags import com.android.systemui.topwindoweffects.data.entity.SqueezeEffectCornerResourceId import com.android.systemui.topwindoweffects.data.entity.SqueezeEffectCornersInfo import com.android.systemui.util.settings.GlobalSettings import com.android.systemui.utils.coroutines.flow.conflatedCallbackFlow import javax.inject.Inject Loading Loading @@ -93,24 +93,38 @@ constructor( } } override suspend fun getRoundedCornersResourceId(): SqueezeEffectCornerResourceId { override suspend fun getRoundedCornersInfo(): SqueezeEffectCornersInfo { val displayInfo = DisplayInfo() context.display.getDisplayInfo(displayInfo) val displayIndex = DisplayUtils.getDisplayUniqueIdConfigIndex(context.resources, displayInfo.uniqueId) return SqueezeEffectCornerResourceId( top = val maxResDisplayMode = DisplayUtils.getMaximumResolutionDisplayMode(displayInfo.supportedModes) val ratio = if (maxResDisplayMode == null) { 1f } else { DisplayUtils.getPhysicalPixelDisplaySizeRatio( /*physicalWidth = */ maxResDisplayMode.physicalWidth, /*physicalHeight = */ maxResDisplayMode.physicalHeight, /*currentWidth = */ displayInfo.naturalWidth, /*currentHeight = */ displayInfo.naturalHeight, ) } return SqueezeEffectCornersInfo( topResourceId = getDrawableResource( displayIndex = displayIndex, arrayResId = R.array.config_roundedCornerTopDrawableArray, backupDrawableId = R.drawable.rounded_corner_top, ), bottom = bottomResourceId = getDrawableResource( displayIndex = displayIndex, arrayResId = R.array.config_roundedCornerBottomDrawableArray, backupDrawableId = R.drawable.rounded_corner_bottom, ), physicalPixelDisplaySizeRatio = ratio, ) } Loading packages/SystemUI/src/com/android/systemui/topwindoweffects/domain/interactor/SqueezeEffectInteractor.kt +1 −2 Original line number Diff line number Diff line Loading @@ -29,6 +29,5 @@ constructor(private val squeezeEffectRepository: SqueezeEffectRepository) { suspend fun getInvocationEffectInitialDelayMs() = squeezeEffectRepository.getInvocationEffectInitialDelayMs() suspend fun getRoundedCornersResourceId() = squeezeEffectRepository.getRoundedCornersResourceId() suspend fun getRoundedCornersResourceId() = squeezeEffectRepository.getRoundedCornersInfo() } Loading
packages/SystemUI/src/com/android/systemui/topwindoweffects/TopLevelWindowEffects.kt +6 −3 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ constructor( // threshold of initial delay launchWindowEffect?.cancel() if (down) { val roundedCornerId = val roundedCornerInfo = async(context = bgContext) { squeezeEffectInteractor.getRoundedCornersResourceId() } Loading @@ -75,8 +75,9 @@ constructor( launchWindowEffect = launch { delay(initialDelay.await()) addWindow( roundedCornerId.await().top, roundedCornerId.await().bottom, roundedCornerInfo.await().topResourceId, roundedCornerInfo.await().bottomResourceId, roundedCornerInfo.await().physicalPixelDisplaySizeRatio, ) } } else { Loading @@ -91,6 +92,7 @@ constructor( private fun addWindow( @DrawableRes topRoundedCornerId: Int, @DrawableRes bottomRoundedCornerId: Int, physicalPixelDisplaySizeRatio: Float, ) { if (root == null) { root = Loading @@ -99,6 +101,7 @@ constructor( viewModelFactory = viewModelFactory, topRoundedCornerResourceId = topRoundedCornerId, bottomRoundedCornerResourceId = bottomRoundedCornerId, physicalPixelDisplaySizeRatio = physicalPixelDisplaySizeRatio, onEffectFinished = { if (root?.isAttachedToWindow == true) { windowManager.removeView(root) Loading
packages/SystemUI/src/com/android/systemui/topwindoweffects/data/entity/SqueezeEffectCornerResourceId.kt→packages/SystemUI/src/com/android/systemui/topwindoweffects/data/entity/SqueezeEffectCornersInfo.kt +7 −1 Original line number Diff line number Diff line Loading @@ -16,4 +16,10 @@ package com.android.systemui.topwindoweffects.data.entity data class SqueezeEffectCornerResourceId(val top: Int, val bottom: Int) import androidx.annotation.DrawableRes data class SqueezeEffectCornersInfo( @DrawableRes val topResourceId: Int, @DrawableRes val bottomResourceId: Int, val physicalPixelDisplaySizeRatio: Float, )
packages/SystemUI/src/com/android/systemui/topwindoweffects/data/repository/SqueezeEffectRepository.kt +2 −2 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ package com.android.systemui.topwindoweffects.data.repository import com.android.systemui.topwindoweffects.data.entity.SqueezeEffectCornerResourceId import com.android.systemui.topwindoweffects.data.entity.SqueezeEffectCornersInfo import kotlinx.coroutines.flow.Flow interface SqueezeEffectRepository { Loading @@ -24,5 +24,5 @@ interface SqueezeEffectRepository { suspend fun getInvocationEffectInitialDelayMs(): Long suspend fun getRoundedCornersResourceId(): SqueezeEffectCornerResourceId suspend fun getRoundedCornersInfo(): SqueezeEffectCornersInfo }
packages/SystemUI/src/com/android/systemui/topwindoweffects/data/repository/SqueezeEffectRepositoryImpl.kt +19 −5 Original line number Diff line number Diff line Loading @@ -34,7 +34,7 @@ import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.res.R import com.android.systemui.shared.Flags import com.android.systemui.topwindoweffects.data.entity.SqueezeEffectCornerResourceId import com.android.systemui.topwindoweffects.data.entity.SqueezeEffectCornersInfo import com.android.systemui.util.settings.GlobalSettings import com.android.systemui.utils.coroutines.flow.conflatedCallbackFlow import javax.inject.Inject Loading Loading @@ -93,24 +93,38 @@ constructor( } } override suspend fun getRoundedCornersResourceId(): SqueezeEffectCornerResourceId { override suspend fun getRoundedCornersInfo(): SqueezeEffectCornersInfo { val displayInfo = DisplayInfo() context.display.getDisplayInfo(displayInfo) val displayIndex = DisplayUtils.getDisplayUniqueIdConfigIndex(context.resources, displayInfo.uniqueId) return SqueezeEffectCornerResourceId( top = val maxResDisplayMode = DisplayUtils.getMaximumResolutionDisplayMode(displayInfo.supportedModes) val ratio = if (maxResDisplayMode == null) { 1f } else { DisplayUtils.getPhysicalPixelDisplaySizeRatio( /*physicalWidth = */ maxResDisplayMode.physicalWidth, /*physicalHeight = */ maxResDisplayMode.physicalHeight, /*currentWidth = */ displayInfo.naturalWidth, /*currentHeight = */ displayInfo.naturalHeight, ) } return SqueezeEffectCornersInfo( topResourceId = getDrawableResource( displayIndex = displayIndex, arrayResId = R.array.config_roundedCornerTopDrawableArray, backupDrawableId = R.drawable.rounded_corner_top, ), bottom = bottomResourceId = getDrawableResource( displayIndex = displayIndex, arrayResId = R.array.config_roundedCornerBottomDrawableArray, backupDrawableId = R.drawable.rounded_corner_bottom, ), physicalPixelDisplaySizeRatio = ratio, ) } Loading
packages/SystemUI/src/com/android/systemui/topwindoweffects/domain/interactor/SqueezeEffectInteractor.kt +1 −2 Original line number Diff line number Diff line Loading @@ -29,6 +29,5 @@ constructor(private val squeezeEffectRepository: SqueezeEffectRepository) { suspend fun getInvocationEffectInitialDelayMs() = squeezeEffectRepository.getInvocationEffectInitialDelayMs() suspend fun getRoundedCornersResourceId() = squeezeEffectRepository.getRoundedCornersResourceId() suspend fun getRoundedCornersResourceId() = squeezeEffectRepository.getRoundedCornersInfo() }