From 2d9d8fc6c50d0e4f6b5cb9c9d1dccf4a994ade10 Mon Sep 17 00:00:00 2001 From: Darrell Shi Date: Thu, 28 Jul 2022 21:43:31 +0000 Subject: [PATCH 1/3] Remove clock date complication. Date will be shown inside smartspace. Bug: 239569907 Test: tested on device Change-Id: I7355e2071dd7fc05fbee18521f70a454083bbd58 --- .../DreamClockDateComplication.java | 111 --------------- .../DreamClockDateComplicationModule.java | 71 ---------- .../dagger/RegisteredComplicationsModule.java | 1 - .../DreamClockDateComplicationTest.java | 128 ------------------ 4 files changed, 311 deletions(-) delete mode 100644 packages/SystemUI/src/com/android/systemui/dreams/complication/DreamClockDateComplication.java delete mode 100644 packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/DreamClockDateComplicationModule.java delete mode 100644 packages/SystemUI/tests/src/com/android/systemui/dreams/complication/DreamClockDateComplicationTest.java diff --git a/packages/SystemUI/src/com/android/systemui/dreams/complication/DreamClockDateComplication.java b/packages/SystemUI/src/com/android/systemui/dreams/complication/DreamClockDateComplication.java deleted file mode 100644 index 1ca06b25aa9fc..0000000000000 --- a/packages/SystemUI/src/com/android/systemui/dreams/complication/DreamClockDateComplication.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (C) 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.systemui.dreams.complication; - -import static com.android.systemui.dreams.complication.dagger.DreamClockDateComplicationModule.DREAM_CLOCK_DATE_COMPLICATION_LAYOUT_PARAMS; -import static com.android.systemui.dreams.complication.dagger.DreamClockDateComplicationModule.DREAM_CLOCK_DATE_COMPLICATION_VIEW; - -import android.content.Context; -import android.view.View; - -import com.android.systemui.CoreStartable; -import com.android.systemui.dreams.DreamOverlayStateController; - -import javax.inject.Inject; -import javax.inject.Named; -import javax.inject.Provider; - -/** - * Clock Date Complication that produce Clock Date view holder. - */ -public class DreamClockDateComplication implements Complication { - private final Provider mDreamClockDateViewHolderProvider; - - /** - * Default constructor for {@link DreamClockDateComplication}. - */ - @Inject - public DreamClockDateComplication( - Provider dreamClockDateViewHolderProvider) { - mDreamClockDateViewHolderProvider = dreamClockDateViewHolderProvider; - } - - @Override - public int getRequiredTypeAvailability() { - return COMPLICATION_TYPE_DATE; - } - - /** - * Create {@link DreamClockDateViewHolder}. - */ - @Override - public ViewHolder createView(ComplicationViewModel model) { - return mDreamClockDateViewHolderProvider.get(); - } - - /** - * {@link CoreStartable} responsible for registering {@link DreamClockDateComplication} with - * SystemUI. - */ - public static class Registrant extends CoreStartable { - private final DreamOverlayStateController mDreamOverlayStateController; - private final DreamClockDateComplication mComplication; - - /** - * Default constructor to register {@link DreamClockDateComplication}. - */ - @Inject - public Registrant(Context context, - DreamOverlayStateController dreamOverlayStateController, - DreamClockDateComplication dreamClockDateComplication) { - super(context); - mDreamOverlayStateController = dreamOverlayStateController; - mComplication = dreamClockDateComplication; - } - - @Override - public void start() { - mDreamOverlayStateController.addComplication(mComplication); - } - } - - /** - * {@link ViewHolder} to contain value/logic associated with {@link DreamClockDateComplication}. - */ - public static class DreamClockDateViewHolder implements ViewHolder { - private final View mView; - private final ComplicationLayoutParams mLayoutParams; - - @Inject - DreamClockDateViewHolder(@Named(DREAM_CLOCK_DATE_COMPLICATION_VIEW) View view, - @Named(DREAM_CLOCK_DATE_COMPLICATION_LAYOUT_PARAMS) - ComplicationLayoutParams layoutParams) { - mView = view; - mLayoutParams = layoutParams; - } - - @Override - public View getView() { - return mView; - } - - @Override - public ComplicationLayoutParams getLayoutParams() { - return mLayoutParams; - } - } -} diff --git a/packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/DreamClockDateComplicationModule.java b/packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/DreamClockDateComplicationModule.java deleted file mode 100644 index 3ab26ceeb076b..0000000000000 --- a/packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/DreamClockDateComplicationModule.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (C) 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.systemui.dreams.complication.dagger; - - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import com.android.internal.util.Preconditions; -import com.android.systemui.R; -import com.android.systemui.dreams.complication.ComplicationLayoutParams; -import com.android.systemui.dreams.complication.DreamClockDateComplication; - -import javax.inject.Named; - -import dagger.Module; -import dagger.Provides; - -/** - * Module for providing {@link DreamClockDateComplication}. - */ -@Module -public interface DreamClockDateComplicationModule { - String DREAM_CLOCK_DATE_COMPLICATION_VIEW = "clock_date_complication_view"; - String DREAM_CLOCK_DATE_COMPLICATION_LAYOUT_PARAMS = - "clock_date_complication_layout_params"; - // Order weight of insert into parent container - //TODO(b/217199227): move to a single location. - int INSERT_ORDER_WEIGHT = 3; - - /** - * Provides the complication view. - */ - @Provides - @Named(DREAM_CLOCK_DATE_COMPLICATION_VIEW) - static View provideComplicationView(LayoutInflater layoutInflater) { - return Preconditions.checkNotNull( - layoutInflater.inflate(R.layout.dream_overlay_complication_clock_date, - null, false), - "R.layout.dream_overlay_complication_clock_date did not properly inflated"); - } - - /** - * Provides the layout parameters for the complication view. - */ - @Provides - @Named(DREAM_CLOCK_DATE_COMPLICATION_LAYOUT_PARAMS) - static ComplicationLayoutParams provideLayoutParams() { - return new ComplicationLayoutParams(0, - ViewGroup.LayoutParams.WRAP_CONTENT, - ComplicationLayoutParams.POSITION_BOTTOM - | ComplicationLayoutParams.POSITION_START, - ComplicationLayoutParams.DIRECTION_END, - INSERT_ORDER_WEIGHT, /* snapToGuide= */ true); - } -} diff --git a/packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/RegisteredComplicationsModule.java b/packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/RegisteredComplicationsModule.java index 4a515f09b5a72..d107c8143a9f2 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/RegisteredComplicationsModule.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/RegisteredComplicationsModule.java @@ -25,7 +25,6 @@ import dagger.Module; * {@link SystemUIBinder}. */ @Module(includes = { - DreamClockDateComplicationModule.class, DreamClockTimeComplicationModule.class, }, subcomponents = { diff --git a/packages/SystemUI/tests/src/com/android/systemui/dreams/complication/DreamClockDateComplicationTest.java b/packages/SystemUI/tests/src/com/android/systemui/dreams/complication/DreamClockDateComplicationTest.java deleted file mode 100644 index 86aa14d7a877d..0000000000000 --- a/packages/SystemUI/tests/src/com/android/systemui/dreams/complication/DreamClockDateComplicationTest.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (C) 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.systemui.dreams.complication; - -import static com.google.common.truth.Truth.assertThat; - -import static org.junit.Assert.assertEquals; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import android.content.Context; -import android.testing.AndroidTestingRunner; -import android.view.View; - -import androidx.test.filters.SmallTest; - -import com.android.systemui.SysuiTestCase; -import com.android.systemui.dreams.DreamOverlayStateController; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -import javax.inject.Provider; - -@SmallTest -@RunWith(AndroidTestingRunner.class) -public class DreamClockDateComplicationTest extends SysuiTestCase { - @SuppressWarnings("HidingField") - @Mock - private Context mContext; - - @Mock - private DreamOverlayStateController mDreamOverlayStateController; - - @Mock - private DreamClockDateComplication mComplication; - - @Mock - private Provider - mDreamClockDateViewHolderProvider; - - @Mock - private DreamClockDateComplication.DreamClockDateViewHolder - mDreamClockDateViewHolder; - - @Mock - private ComplicationViewModel mComplicationViewModel; - - @Mock - private View mView; - - @Mock - private ComplicationLayoutParams mLayoutParams; - - @Before - public void setup() { - MockitoAnnotations.initMocks(this); - when(mDreamClockDateViewHolderProvider.get()).thenReturn(mDreamClockDateViewHolder); - - } - - /** - * Ensures {@link DreamClockDateComplication} is registered. - */ - @Test - public void testComplicationAdded() { - final DreamClockDateComplication.Registrant registrant = - new DreamClockDateComplication.Registrant( - mContext, - mDreamOverlayStateController, - mComplication); - registrant.start(); - verify(mDreamOverlayStateController).addComplication(eq(mComplication)); - } - - /** - * Verifies {@link DreamClockDateComplication} has the required type. - */ - @Test - public void testComplicationRequiredTypeAvailability() { - final DreamClockDateComplication complication = - new DreamClockDateComplication(mDreamClockDateViewHolderProvider); - assertEquals(Complication.COMPLICATION_TYPE_DATE, - complication.getRequiredTypeAvailability()); - } - - /** - * Verifies {@link DreamClockDateComplication.DreamClockDateViewHolder} is obtainable from its - * provider when the complication creates view. - */ - @Test - public void testComplicationViewHolderProviderOnCreateView() { - final DreamClockDateComplication complication = - new DreamClockDateComplication(mDreamClockDateViewHolderProvider); - final Complication.ViewHolder viewHolder = complication.createView(mComplicationViewModel); - verify(mDreamClockDateViewHolderProvider).get(); - assertThat(viewHolder).isEqualTo(mDreamClockDateViewHolder); - } - - /** - * Verifies {@link DreamClockDateComplication.DreamClockDateViewHolder} has the intended view - * and layout parameters from constructor. - */ - @Test - public void testComplicationViewHolderContentAccessors() { - final DreamClockDateComplication.DreamClockDateViewHolder viewHolder = - new DreamClockDateComplication.DreamClockDateViewHolder(mView, mLayoutParams); - assertThat(viewHolder.getView()).isEqualTo(mView); - assertThat(viewHolder.getLayoutParams()).isEqualTo(mLayoutParams); - } -} From c820f5afb5722935ea1d85108f672ee52199dfaa Mon Sep 17 00:00:00 2001 From: Darrell Shi Date: Thu, 28 Jul 2022 22:19:18 +0000 Subject: [PATCH 2/3] Refactor dream complications. - move SmartspaceComplication under dreams/complication - move all layout params definitions under shared complication module - inject layout params into SmartspaceComplication Bug: 217199227 Fix: 217199227 Test: manual Change-Id: I50ff8774bcb86d41fb14b48329392d99b63cbfb8 --- .../DreamClockTimeComplication.java | 2 +- .../DreamHomeControlsComplication.java | 2 +- .../SmartSpaceComplication.java | 51 ++++++++-------- .../DreamClockTimeComplicationModule.java | 21 ------- ...reamHomeControlsComplicationComponent.java | 26 -------- .../dagger/RegisteredComplicationsModule.java | 60 +++++++++++++++++++ .../SmartSpaceComplicationTest.java | 12 ++-- 7 files changed, 93 insertions(+), 81 deletions(-) rename packages/SystemUI/src/com/android/systemui/dreams/{ => complication}/SmartSpaceComplication.java (79%) rename packages/SystemUI/tests/src/com/android/systemui/dreams/{ => complication}/SmartSpaceComplicationTest.java (94%) diff --git a/packages/SystemUI/src/com/android/systemui/dreams/complication/DreamClockTimeComplication.java b/packages/SystemUI/src/com/android/systemui/dreams/complication/DreamClockTimeComplication.java index 7f67ecd191755..675a2f46d3108 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/complication/DreamClockTimeComplication.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/complication/DreamClockTimeComplication.java @@ -16,8 +16,8 @@ package com.android.systemui.dreams.complication; -import static com.android.systemui.dreams.complication.dagger.DreamClockTimeComplicationModule.DREAM_CLOCK_TIME_COMPLICATION_LAYOUT_PARAMS; import static com.android.systemui.dreams.complication.dagger.DreamClockTimeComplicationModule.DREAM_CLOCK_TIME_COMPLICATION_VIEW; +import static com.android.systemui.dreams.complication.dagger.RegisteredComplicationsModule.DREAM_CLOCK_TIME_COMPLICATION_LAYOUT_PARAMS; import android.content.Context; import android.view.View; diff --git a/packages/SystemUI/src/com/android/systemui/dreams/complication/DreamHomeControlsComplication.java b/packages/SystemUI/src/com/android/systemui/dreams/complication/DreamHomeControlsComplication.java index 1a9d9b50104b0..02c5de3af619a 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/complication/DreamHomeControlsComplication.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/complication/DreamHomeControlsComplication.java @@ -19,8 +19,8 @@ package com.android.systemui.dreams.complication; import static com.android.systemui.controls.dagger.ControlsComponent.Visibility.AVAILABLE; import static com.android.systemui.controls.dagger.ControlsComponent.Visibility.AVAILABLE_AFTER_UNLOCK; import static com.android.systemui.controls.dagger.ControlsComponent.Visibility.UNAVAILABLE; -import static com.android.systemui.dreams.complication.dagger.DreamHomeControlsComplicationComponent.DreamHomeControlsModule.DREAM_HOME_CONTROLS_CHIP_LAYOUT_PARAMS; import static com.android.systemui.dreams.complication.dagger.DreamHomeControlsComplicationComponent.DreamHomeControlsModule.DREAM_HOME_CONTROLS_CHIP_VIEW; +import static com.android.systemui.dreams.complication.dagger.RegisteredComplicationsModule.DREAM_HOME_CONTROLS_CHIP_LAYOUT_PARAMS; import android.content.Context; import android.content.Intent; diff --git a/packages/SystemUI/src/com/android/systemui/dreams/SmartSpaceComplication.java b/packages/SystemUI/src/com/android/systemui/dreams/complication/SmartSpaceComplication.java similarity index 79% rename from packages/SystemUI/src/com/android/systemui/dreams/SmartSpaceComplication.java rename to packages/SystemUI/src/com/android/systemui/dreams/complication/SmartSpaceComplication.java index be94e50319178..ac6edba6b3fa2 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/SmartSpaceComplication.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/complication/SmartSpaceComplication.java @@ -14,7 +14,9 @@ * limitations under the License. */ -package com.android.systemui.dreams; +package com.android.systemui.dreams.complication; + +import static com.android.systemui.dreams.complication.dagger.RegisteredComplicationsModule.DREAM_SMARTSPACE_LAYOUT_PARAMS; import android.content.Context; import android.os.Parcelable; @@ -23,21 +25,33 @@ import android.view.ViewGroup; import android.widget.FrameLayout; import com.android.systemui.CoreStartable; -import com.android.systemui.dreams.complication.Complication; -import com.android.systemui.dreams.complication.ComplicationLayoutParams; -import com.android.systemui.dreams.complication.ComplicationViewModel; +import com.android.systemui.dreams.DreamOverlayStateController; import com.android.systemui.dreams.smartspace.DreamSmartspaceController; import com.android.systemui.plugins.BcSmartspaceDataPlugin; import java.util.List; import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Provider; /** * {@link SmartSpaceComplication} embodies the SmartSpace view found on the lockscreen as a * {@link Complication} */ public class SmartSpaceComplication implements Complication { + private final Provider mViewHolderProvider; + + @Inject + public SmartSpaceComplication(Provider viewHolderProvider) { + mViewHolderProvider = viewHolderProvider; + } + + @Override + public ViewHolder createView(ComplicationViewModel model) { + return mViewHolderProvider.get(); + } + /** * {@link CoreStartable} responsbile for registering {@link SmartSpaceComplication} with * SystemUI. @@ -89,17 +103,20 @@ public class SmartSpaceComplication implements Complication { } } - private static class SmartSpaceComplicationViewHolder implements ViewHolder { + static class SmartSpaceComplicationViewHolder implements ViewHolder { private View mView = null; - private static final int SMARTSPACE_COMPLICATION_WEIGHT = 10; private final DreamSmartspaceController mSmartSpaceController; private final Context mContext; + private final ComplicationLayoutParams mLayoutParams; + @Inject protected SmartSpaceComplicationViewHolder( Context context, - DreamSmartspaceController smartSpaceController) { + DreamSmartspaceController smartSpaceController, + @Named(DREAM_SMARTSPACE_LAYOUT_PARAMS) ComplicationLayoutParams layoutParams) { mSmartSpaceController = smartSpaceController; mContext = context; + mLayoutParams = layoutParams; } @Override @@ -119,25 +136,7 @@ public class SmartSpaceComplication implements Complication { @Override public ComplicationLayoutParams getLayoutParams() { - return new ComplicationLayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, - ComplicationLayoutParams.POSITION_TOP | ComplicationLayoutParams.POSITION_START, - ComplicationLayoutParams.DIRECTION_DOWN, - SMARTSPACE_COMPLICATION_WEIGHT, true); + return mLayoutParams; } } - - private final DreamSmartspaceController mSmartSpaceController; - private final Context mContext; - - @Inject - public SmartSpaceComplication(Context context, - DreamSmartspaceController smartSpaceController) { - mContext = context; - mSmartSpaceController = smartSpaceController; - } - - @Override - public ViewHolder createView(ComplicationViewModel model) { - return new SmartSpaceComplicationViewHolder(mContext, mSmartSpaceController); - } } diff --git a/packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/DreamClockTimeComplicationModule.java b/packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/DreamClockTimeComplicationModule.java index 3ad7d3ded7494..5250d44761b9a 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/DreamClockTimeComplicationModule.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/DreamClockTimeComplicationModule.java @@ -19,12 +19,10 @@ package com.android.systemui.dreams.complication.dagger; import android.view.LayoutInflater; import android.view.View; -import android.view.ViewGroup; import android.widget.TextClock; import com.android.internal.util.Preconditions; import com.android.systemui.R; -import com.android.systemui.dreams.complication.ComplicationLayoutParams; import com.android.systemui.dreams.complication.DreamClockTimeComplication; import javax.inject.Named; @@ -38,11 +36,6 @@ import dagger.Provides; @Module public interface DreamClockTimeComplicationModule { String DREAM_CLOCK_TIME_COMPLICATION_VIEW = "clock_time_complication_view"; - String DREAM_CLOCK_TIME_COMPLICATION_LAYOUT_PARAMS = - "clock_time_complication_layout_params"; - // Order weight of insert into parent container - //TODO(b/217199227): move to a single location. - int INSERT_ORDER_WEIGHT = 0; String TAG_WEIGHT = "'wght' "; int WEIGHT = 200; @@ -59,18 +52,4 @@ public interface DreamClockTimeComplicationModule { view.setFontVariationSettings(TAG_WEIGHT + WEIGHT); return view; } - - /** - * Provides the layout parameters for the complication view. - */ - @Provides - @Named(DREAM_CLOCK_TIME_COMPLICATION_LAYOUT_PARAMS) - static ComplicationLayoutParams provideLayoutParams() { - return new ComplicationLayoutParams(0, - ViewGroup.LayoutParams.WRAP_CONTENT, - ComplicationLayoutParams.POSITION_BOTTOM - | ComplicationLayoutParams.POSITION_START, - ComplicationLayoutParams.DIRECTION_UP, - INSERT_ORDER_WEIGHT); - } } diff --git a/packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/DreamHomeControlsComplicationComponent.java b/packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/DreamHomeControlsComplicationComponent.java index 033ce392220ae..cf05d2d9cda03 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/DreamHomeControlsComplicationComponent.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/DreamHomeControlsComplicationComponent.java @@ -18,13 +18,10 @@ package com.android.systemui.dreams.complication.dagger; import static java.lang.annotation.RetentionPolicy.RUNTIME; -import android.content.res.Resources; import android.view.LayoutInflater; import android.widget.ImageView; import com.android.systemui.R; -import com.android.systemui.dagger.qualifiers.Main; -import com.android.systemui.dreams.complication.ComplicationLayoutParams; import com.android.systemui.dreams.complication.DreamHomeControlsComplication; import java.lang.annotation.Documented; @@ -70,12 +67,6 @@ public interface DreamHomeControlsComplicationComponent { @Module interface DreamHomeControlsModule { String DREAM_HOME_CONTROLS_CHIP_VIEW = "dream_home_controls_chip_view"; - String DREAM_HOME_CONTROLS_CHIP_LAYOUT_PARAMS = "home_controls_chip_layout_params"; - - // TODO(b/217199227): move to a single location. - // Weight of order in the parent container. The home controls complication should have low - // weight and be placed at the end. - int INSERT_ORDER_WEIGHT = 0; /** * Provides the dream home controls chip view. @@ -87,22 +78,5 @@ public interface DreamHomeControlsComplicationComponent { return (ImageView) layoutInflater.inflate(R.layout.dream_overlay_home_controls_chip, null, false); } - - /** - * Provides the layout parameters for the dream home controls complication. - */ - @Provides - @DreamHomeControlsComplicationScope - @Named(DREAM_HOME_CONTROLS_CHIP_LAYOUT_PARAMS) - static ComplicationLayoutParams provideLayoutParams(@Main Resources res) { - return new ComplicationLayoutParams( - res.getDimensionPixelSize(R.dimen.keyguard_affordance_fixed_width), - res.getDimensionPixelSize(R.dimen.keyguard_affordance_fixed_height), - ComplicationLayoutParams.POSITION_BOTTOM - | ComplicationLayoutParams.POSITION_START, - ComplicationLayoutParams.DIRECTION_END, - INSERT_ORDER_WEIGHT); - } } - } diff --git a/packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/RegisteredComplicationsModule.java b/packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/RegisteredComplicationsModule.java index d107c8143a9f2..33d4bddc0116a 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/RegisteredComplicationsModule.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/RegisteredComplicationsModule.java @@ -16,9 +16,18 @@ package com.android.systemui.dreams.complication.dagger; +import android.content.res.Resources; +import android.view.ViewGroup; + +import com.android.systemui.R; import com.android.systemui.dagger.SystemUIBinder; +import com.android.systemui.dagger.qualifiers.Main; +import com.android.systemui.dreams.complication.ComplicationLayoutParams; + +import javax.inject.Named; import dagger.Module; +import dagger.Provides; /** * Module for all components with corresponding dream layer complications registered in @@ -31,4 +40,55 @@ import dagger.Module; DreamHomeControlsComplicationComponent.class, }) public interface RegisteredComplicationsModule { + String DREAM_CLOCK_TIME_COMPLICATION_LAYOUT_PARAMS = "time_complication_layout_params"; + String DREAM_SMARTSPACE_LAYOUT_PARAMS = "smartspace_layout_params"; + String DREAM_HOME_CONTROLS_CHIP_LAYOUT_PARAMS = "home_controls_chip_layout_params"; + + int DREAM_CLOCK_TIME_COMPLICATION_WEIGHT = 0; + int DREAM_SMARTSPACE_COMPLICATION_WEIGHT = 0; + int DREAM_HOME_CONTROLS_CHIP_COMPLICATION_WEIGHT = 0; + + /** + * Provides layout parameters for the clock time complication. + */ + @Provides + @Named(DREAM_CLOCK_TIME_COMPLICATION_LAYOUT_PARAMS) + static ComplicationLayoutParams provideClockTimeLayoutParams() { + return new ComplicationLayoutParams(0, + ViewGroup.LayoutParams.WRAP_CONTENT, + ComplicationLayoutParams.POSITION_BOTTOM + | ComplicationLayoutParams.POSITION_START, + ComplicationLayoutParams.DIRECTION_UP, + DREAM_CLOCK_TIME_COMPLICATION_WEIGHT); + } + + /** + * Provides layout parameters for the home controls complication. + */ + @Provides + @Named(DREAM_HOME_CONTROLS_CHIP_LAYOUT_PARAMS) + static ComplicationLayoutParams provideHomeControlsChipLayoutParams(@Main Resources res) { + return new ComplicationLayoutParams( + res.getDimensionPixelSize(R.dimen.keyguard_affordance_fixed_width), + res.getDimensionPixelSize(R.dimen.keyguard_affordance_fixed_height), + ComplicationLayoutParams.POSITION_BOTTOM + | ComplicationLayoutParams.POSITION_START, + ComplicationLayoutParams.DIRECTION_END, + DREAM_HOME_CONTROLS_CHIP_COMPLICATION_WEIGHT); + } + + /** + * Provides layout parameters for the smartspace complication. + */ + @Provides + @Named(DREAM_SMARTSPACE_LAYOUT_PARAMS) + static ComplicationLayoutParams provideSmartspaceLayoutParams() { + return new ComplicationLayoutParams(0, + ViewGroup.LayoutParams.WRAP_CONTENT, + ComplicationLayoutParams.POSITION_TOP + | ComplicationLayoutParams.POSITION_START, + ComplicationLayoutParams.DIRECTION_DOWN, + DREAM_SMARTSPACE_COMPLICATION_WEIGHT, + true /*snapToGuide*/); + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/dreams/SmartSpaceComplicationTest.java b/packages/SystemUI/tests/src/com/android/systemui/dreams/complication/SmartSpaceComplicationTest.java similarity index 94% rename from packages/SystemUI/tests/src/com/android/systemui/dreams/SmartSpaceComplicationTest.java rename to packages/SystemUI/tests/src/com/android/systemui/dreams/complication/SmartSpaceComplicationTest.java index 964e6d79f0bf8..7d54758acee7d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/dreams/SmartSpaceComplicationTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/dreams/complication/SmartSpaceComplicationTest.java @@ -13,11 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.systemui.dreams; +package com.android.systemui.dreams.complication; import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -30,8 +31,7 @@ import android.view.View; import androidx.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; -import com.android.systemui.dreams.complication.Complication; -import com.android.systemui.dreams.complication.ComplicationViewModel; +import com.android.systemui.dreams.DreamOverlayStateController; import com.android.systemui.dreams.smartspace.DreamSmartspaceController; import com.android.systemui.plugins.BcSmartspaceDataPlugin; @@ -183,9 +183,9 @@ public class SmartSpaceComplicationTest extends SysuiTestCase { @Test public void testGetView_reusesSameView() { - final SmartSpaceComplication complication = new SmartSpaceComplication(getContext(), - mSmartspaceController); - final Complication.ViewHolder viewHolder = complication.createView(mComplicationViewModel); + final Complication.ViewHolder viewHolder = + new SmartSpaceComplication.SmartSpaceComplicationViewHolder(getContext(), + mSmartspaceController, mock(ComplicationLayoutParams.class)); when(mSmartspaceController.buildAndConnectView(any())).thenReturn(mBcSmartspaceView); assertEquals(viewHolder.getView(), viewHolder.getView()); } From 5d44b8feda06c4d0349867789caa89aeb7e54747 Mon Sep 17 00:00:00 2001 From: Darrell Shi Date: Thu, 28 Jul 2022 22:21:24 +0000 Subject: [PATCH 3/3] Update complications layout. - move clock time complication to up left corner above smartspace - move home controls to the left of cast Bug: 239090303 Test: manually on device Change-Id: I605cad1c4e92f9d2e6756c805e1d4ce81a8f42b0 --- .../dagger/RegisteredComplicationsModule.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/RegisteredComplicationsModule.java b/packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/RegisteredComplicationsModule.java index 33d4bddc0116a..eb07238ce752b 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/RegisteredComplicationsModule.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/complication/dagger/RegisteredComplicationsModule.java @@ -44,9 +44,9 @@ public interface RegisteredComplicationsModule { String DREAM_SMARTSPACE_LAYOUT_PARAMS = "smartspace_layout_params"; String DREAM_HOME_CONTROLS_CHIP_LAYOUT_PARAMS = "home_controls_chip_layout_params"; - int DREAM_CLOCK_TIME_COMPLICATION_WEIGHT = 0; + int DREAM_CLOCK_TIME_COMPLICATION_WEIGHT = 1; int DREAM_SMARTSPACE_COMPLICATION_WEIGHT = 0; - int DREAM_HOME_CONTROLS_CHIP_COMPLICATION_WEIGHT = 0; + int DREAM_HOME_CONTROLS_CHIP_COMPLICATION_WEIGHT = 1; /** * Provides layout parameters for the clock time complication. @@ -56,9 +56,9 @@ public interface RegisteredComplicationsModule { static ComplicationLayoutParams provideClockTimeLayoutParams() { return new ComplicationLayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, - ComplicationLayoutParams.POSITION_BOTTOM + ComplicationLayoutParams.POSITION_TOP | ComplicationLayoutParams.POSITION_START, - ComplicationLayoutParams.DIRECTION_UP, + ComplicationLayoutParams.DIRECTION_DOWN, DREAM_CLOCK_TIME_COMPLICATION_WEIGHT); }