Merge changes from topic "dream-complications-relayout" into tm-qpr-dev am: 0471f7b84a
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19461365 Change-Id: I6b08c9fb8da2bea34b41a4d6f31ea4b60b4bd2a5 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -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<DreamClockDateViewHolder> mDreamClockDateViewHolderProvider;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Default constructor for {@link DreamClockDateComplication}.
|
|
||||||
*/
|
|
||||||
@Inject
|
|
||||||
public DreamClockDateComplication(
|
|
||||||
Provider<DreamClockDateViewHolder> 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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -16,8 +16,8 @@
|
|||||||
|
|
||||||
package com.android.systemui.dreams.complication;
|
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.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.content.Context;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|||||||
@@ -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;
|
||||||
import static com.android.systemui.controls.dagger.ControlsComponent.Visibility.AVAILABLE_AFTER_UNLOCK;
|
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.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.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.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
|||||||
@@ -14,7 +14,9 @@
|
|||||||
* limitations under the License.
|
* 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.content.Context;
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
@@ -23,21 +25,33 @@ import android.view.ViewGroup;
|
|||||||
import android.widget.FrameLayout;
|
import android.widget.FrameLayout;
|
||||||
|
|
||||||
import com.android.systemui.CoreStartable;
|
import com.android.systemui.CoreStartable;
|
||||||
import com.android.systemui.dreams.complication.Complication;
|
import com.android.systemui.dreams.DreamOverlayStateController;
|
||||||
import com.android.systemui.dreams.complication.ComplicationLayoutParams;
|
|
||||||
import com.android.systemui.dreams.complication.ComplicationViewModel;
|
|
||||||
import com.android.systemui.dreams.smartspace.DreamSmartspaceController;
|
import com.android.systemui.dreams.smartspace.DreamSmartspaceController;
|
||||||
import com.android.systemui.plugins.BcSmartspaceDataPlugin;
|
import com.android.systemui.plugins.BcSmartspaceDataPlugin;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
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 SmartSpaceComplication} embodies the SmartSpace view found on the lockscreen as a
|
||||||
* {@link Complication}
|
* {@link Complication}
|
||||||
*/
|
*/
|
||||||
public class SmartSpaceComplication implements Complication {
|
public class SmartSpaceComplication implements Complication {
|
||||||
|
private final Provider<SmartSpaceComplicationViewHolder> mViewHolderProvider;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public SmartSpaceComplication(Provider<SmartSpaceComplicationViewHolder> viewHolderProvider) {
|
||||||
|
mViewHolderProvider = viewHolderProvider;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ViewHolder createView(ComplicationViewModel model) {
|
||||||
|
return mViewHolderProvider.get();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link CoreStartable} responsbile for registering {@link SmartSpaceComplication} with
|
* {@link CoreStartable} responsbile for registering {@link SmartSpaceComplication} with
|
||||||
* SystemUI.
|
* 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 View mView = null;
|
||||||
private static final int SMARTSPACE_COMPLICATION_WEIGHT = 10;
|
|
||||||
private final DreamSmartspaceController mSmartSpaceController;
|
private final DreamSmartspaceController mSmartSpaceController;
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
|
private final ComplicationLayoutParams mLayoutParams;
|
||||||
|
|
||||||
|
@Inject
|
||||||
protected SmartSpaceComplicationViewHolder(
|
protected SmartSpaceComplicationViewHolder(
|
||||||
Context context,
|
Context context,
|
||||||
DreamSmartspaceController smartSpaceController) {
|
DreamSmartspaceController smartSpaceController,
|
||||||
|
@Named(DREAM_SMARTSPACE_LAYOUT_PARAMS) ComplicationLayoutParams layoutParams) {
|
||||||
mSmartSpaceController = smartSpaceController;
|
mSmartSpaceController = smartSpaceController;
|
||||||
mContext = context;
|
mContext = context;
|
||||||
|
mLayoutParams = layoutParams;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -119,25 +136,7 @@ public class SmartSpaceComplication implements Complication {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ComplicationLayoutParams getLayoutParams() {
|
public ComplicationLayoutParams getLayoutParams() {
|
||||||
return new ComplicationLayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT,
|
return mLayoutParams;
|
||||||
ComplicationLayoutParams.POSITION_TOP | ComplicationLayoutParams.POSITION_START,
|
|
||||||
ComplicationLayoutParams.DIRECTION_DOWN,
|
|
||||||
SMARTSPACE_COMPLICATION_WEIGHT, true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -19,12 +19,10 @@ package com.android.systemui.dreams.complication.dagger;
|
|||||||
|
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
|
||||||
import android.widget.TextClock;
|
import android.widget.TextClock;
|
||||||
|
|
||||||
import com.android.internal.util.Preconditions;
|
import com.android.internal.util.Preconditions;
|
||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.dreams.complication.ComplicationLayoutParams;
|
|
||||||
import com.android.systemui.dreams.complication.DreamClockTimeComplication;
|
import com.android.systemui.dreams.complication.DreamClockTimeComplication;
|
||||||
|
|
||||||
import javax.inject.Named;
|
import javax.inject.Named;
|
||||||
@@ -38,11 +36,6 @@ import dagger.Provides;
|
|||||||
@Module
|
@Module
|
||||||
public interface DreamClockTimeComplicationModule {
|
public interface DreamClockTimeComplicationModule {
|
||||||
String DREAM_CLOCK_TIME_COMPLICATION_VIEW = "clock_time_complication_view";
|
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' ";
|
String TAG_WEIGHT = "'wght' ";
|
||||||
int WEIGHT = 200;
|
int WEIGHT = 200;
|
||||||
|
|
||||||
@@ -59,18 +52,4 @@ public interface DreamClockTimeComplicationModule {
|
|||||||
view.setFontVariationSettings(TAG_WEIGHT + WEIGHT);
|
view.setFontVariationSettings(TAG_WEIGHT + WEIGHT);
|
||||||
return view;
|
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,13 +18,10 @@ package com.android.systemui.dreams.complication.dagger;
|
|||||||
|
|
||||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||||
|
|
||||||
import android.content.res.Resources;
|
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
|
|
||||||
import com.android.systemui.R;
|
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 com.android.systemui.dreams.complication.DreamHomeControlsComplication;
|
||||||
|
|
||||||
import java.lang.annotation.Documented;
|
import java.lang.annotation.Documented;
|
||||||
@@ -70,12 +67,6 @@ public interface DreamHomeControlsComplicationComponent {
|
|||||||
@Module
|
@Module
|
||||||
interface DreamHomeControlsModule {
|
interface DreamHomeControlsModule {
|
||||||
String DREAM_HOME_CONTROLS_CHIP_VIEW = "dream_home_controls_chip_view";
|
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.
|
* 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,
|
return (ImageView) layoutInflater.inflate(R.layout.dream_overlay_home_controls_chip,
|
||||||
null, false);
|
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,20 +16,79 @@
|
|||||||
|
|
||||||
package com.android.systemui.dreams.complication.dagger;
|
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.SystemUIBinder;
|
||||||
|
import com.android.systemui.dagger.qualifiers.Main;
|
||||||
|
import com.android.systemui.dreams.complication.ComplicationLayoutParams;
|
||||||
|
|
||||||
|
import javax.inject.Named;
|
||||||
|
|
||||||
import dagger.Module;
|
import dagger.Module;
|
||||||
|
import dagger.Provides;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Module for all components with corresponding dream layer complications registered in
|
* Module for all components with corresponding dream layer complications registered in
|
||||||
* {@link SystemUIBinder}.
|
* {@link SystemUIBinder}.
|
||||||
*/
|
*/
|
||||||
@Module(includes = {
|
@Module(includes = {
|
||||||
DreamClockDateComplicationModule.class,
|
|
||||||
DreamClockTimeComplicationModule.class,
|
DreamClockTimeComplicationModule.class,
|
||||||
},
|
},
|
||||||
subcomponents = {
|
subcomponents = {
|
||||||
DreamHomeControlsComplicationComponent.class,
|
DreamHomeControlsComplicationComponent.class,
|
||||||
})
|
})
|
||||||
public interface RegisteredComplicationsModule {
|
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 = 1;
|
||||||
|
int DREAM_SMARTSPACE_COMPLICATION_WEIGHT = 0;
|
||||||
|
int DREAM_HOME_CONTROLS_CHIP_COMPLICATION_WEIGHT = 1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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_TOP
|
||||||
|
| ComplicationLayoutParams.POSITION_START,
|
||||||
|
ComplicationLayoutParams.DIRECTION_DOWN,
|
||||||
|
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*/);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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<DreamClockDateComplication.DreamClockDateViewHolder>
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -13,11 +13,12 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package com.android.systemui.dreams;
|
package com.android.systemui.dreams.complication;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
@@ -30,8 +31,7 @@ import android.view.View;
|
|||||||
import androidx.test.filters.SmallTest;
|
import androidx.test.filters.SmallTest;
|
||||||
|
|
||||||
import com.android.systemui.SysuiTestCase;
|
import com.android.systemui.SysuiTestCase;
|
||||||
import com.android.systemui.dreams.complication.Complication;
|
import com.android.systemui.dreams.DreamOverlayStateController;
|
||||||
import com.android.systemui.dreams.complication.ComplicationViewModel;
|
|
||||||
import com.android.systemui.dreams.smartspace.DreamSmartspaceController;
|
import com.android.systemui.dreams.smartspace.DreamSmartspaceController;
|
||||||
import com.android.systemui.plugins.BcSmartspaceDataPlugin;
|
import com.android.systemui.plugins.BcSmartspaceDataPlugin;
|
||||||
|
|
||||||
@@ -183,9 +183,9 @@ public class SmartSpaceComplicationTest extends SysuiTestCase {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetView_reusesSameView() {
|
public void testGetView_reusesSameView() {
|
||||||
final SmartSpaceComplication complication = new SmartSpaceComplication(getContext(),
|
final Complication.ViewHolder viewHolder =
|
||||||
mSmartspaceController);
|
new SmartSpaceComplication.SmartSpaceComplicationViewHolder(getContext(),
|
||||||
final Complication.ViewHolder viewHolder = complication.createView(mComplicationViewModel);
|
mSmartspaceController, mock(ComplicationLayoutParams.class));
|
||||||
when(mSmartspaceController.buildAndConnectView(any())).thenReturn(mBcSmartspaceView);
|
when(mSmartspaceController.buildAndConnectView(any())).thenReturn(mBcSmartspaceView);
|
||||||
assertEquals(viewHolder.getView(), viewHolder.getView());
|
assertEquals(viewHolder.getView(), viewHolder.getView());
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user