Loading packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java +23 −18 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import static android.app.slice.Slice.HINT_LIST_ITEM; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.Display.INVALID_DISPLAY; import static com.android.systemui.util.InjectionInflationController.VIEW_CONTEXT; import android.animation.LayoutTransition; import android.animation.ObjectAnimator; import android.animation.PropertyValuesHolder; Loading Loading @@ -60,6 +62,7 @@ import com.android.systemui.Dependency; import com.android.systemui.Interpolators; import com.android.systemui.R; import com.android.systemui.keyguard.KeyguardSliceProvider; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.tuner.TunerService; import com.android.systemui.util.wakelock.KeepAwakeAnimationListener; Loading @@ -70,6 +73,9 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import javax.inject.Inject; import javax.inject.Named; /** * View visible under the clock on the lock screen and AoD. */ Loading @@ -80,6 +86,8 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe public static final int DEFAULT_ANIM_DURATION = 550; private final HashMap<View, PendingIntent> mClickActions; private final ActivityStarter mActivityStarter; private final ConfigurationController mConfigurationController; private Uri mKeyguardSliceUri; @VisibleForTesting TextView mTitle; Loading @@ -99,16 +107,10 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe private final int mRowWithHeaderPadding; private final int mRowPadding; public KeyguardSliceView(Context context) { this(context, null, 0); } public KeyguardSliceView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public KeyguardSliceView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); @Inject public KeyguardSliceView(@Named(VIEW_CONTEXT) Context context, AttributeSet attrs, ActivityStarter activityStarter, ConfigurationController configurationController) { super(context, attrs); TunerService tunerService = Dependency.get(TunerService.class); tunerService.addTunable(this, Settings.Secure.KEYGUARD_SLICE_URI); Loading @@ -117,6 +119,8 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe mRowPadding = context.getResources().getDimensionPixelSize(R.dimen.subtitle_clock_padding); mRowWithHeaderPadding = context.getResources() .getDimensionPixelSize(R.dimen.header_subtitle_padding); mActivityStarter = activityStarter; mConfigurationController = configurationController; LayoutTransition transition = new LayoutTransition(); transition.setStagger(LayoutTransition.CHANGE_APPEARING, DEFAULT_ANIM_DURATION / 2); Loading @@ -137,6 +141,7 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe mRow = findViewById(R.id.row); mTextColor = Utils.getColorAttrDefaultColor(mContext, R.attr.wallpaperTextColor); mIconSize = (int) mContext.getResources().getDimension(R.dimen.widget_icon_size); mTitle.setOnClickListener(this); } @Override Loading @@ -146,7 +151,7 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe mDisplayId = getDisplay().getDisplayId(); // Make sure we always have the most current slice mLiveData.observeForever(this); Dependency.get(ConfigurationController.class).addCallback(this); mConfigurationController.addCallback(this); } @Override Loading @@ -157,7 +162,7 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe if (mDisplayId == DEFAULT_DISPLAY) { mLiveData.removeObserver(this); } Dependency.get(ConfigurationController.class).removeCallback(this); mConfigurationController.removeCallback(this); } /** Loading @@ -179,6 +184,7 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe Trace.endSection(); return; } mClickActions.clear(); ListContent lc = new ListContent(getContext(), mSlice); SliceContent headerContent = lc.getHeader(); Loading @@ -201,9 +207,12 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe SliceItem mainTitle = header.getTitleItem(); CharSequence title = mainTitle != null ? mainTitle.getText() : null; mTitle.setText(title); if (header.getPrimaryAction() != null && header.getPrimaryAction().getAction() != null) { mClickActions.put(mTitle, header.getPrimaryAction().getAction()); } } mClickActions.clear(); final int subItemsCount = subItems.size(); final int blendedColor = getTextColor(); final int startIndex = mHasHeader ? 1 : 0; // First item is header; skip it Loading Loading @@ -289,11 +298,7 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe public void onClick(View v) { final PendingIntent action = mClickActions.get(v); if (action != null) { try { action.send(); } catch (PendingIntent.CanceledException e) { Log.i(TAG, "Pending intent cancelled, nothing to launch", e); } mActivityStarter.startPendingIntentDismissingKeyguard(action); } } Loading packages/SystemUI/src/com/android/systemui/util/InjectionInflationController.java +6 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.view.LayoutInflater; import android.view.View; import com.android.keyguard.KeyguardClockSwitch; import com.android.keyguard.KeyguardSliceView; import com.android.systemui.SystemUIFactory; import com.android.systemui.qs.QSCarrierGroup; import com.android.systemui.qs.QSFooterImpl; Loading Loading @@ -136,6 +137,11 @@ public class InjectionInflationController { * Creates the KeyguardClockSwitch. */ KeyguardClockSwitch createKeyguardClockSwitch(); /** * Creates the KeyguardSliceView. */ KeyguardSliceView createKeyguardSliceView(); } /** Loading packages/SystemUI/tests/src/com/android/keyguard/KeyguardSliceViewTest.java +7 −1 Original line number Diff line number Diff line Loading @@ -27,8 +27,10 @@ import androidx.slice.SliceProvider; import androidx.slice.SliceSpecs; import androidx.slice.builders.ListBuilder; import com.android.systemui.SystemUIFactory; import com.android.systemui.SysuiTestCase; import com.android.systemui.keyguard.KeyguardSliceProvider; import com.android.systemui.util.InjectionInflationController; import org.junit.Assert; import org.junit.Before; Loading @@ -49,7 +51,11 @@ public class KeyguardSliceViewTest extends SysuiTestCase { @Before public void setUp() throws Exception { com.android.systemui.util.Assert.sMainLooper = TestableLooper.get(this).getLooper(); mKeyguardSliceView = (KeyguardSliceView) LayoutInflater.from(getContext()) InjectionInflationController inflationController = new InjectionInflationController( SystemUIFactory.getInstance().getRootComponent()); LayoutInflater layoutInflater = inflationController .injectable(LayoutInflater.from(getContext())); mKeyguardSliceView = (KeyguardSliceView) layoutInflater .inflate(R.layout.keyguard_status_area, null); mSliceUri = Uri.parse(KeyguardSliceProvider.KEYGUARD_SLICE_URI); SliceProvider.setSpecs(new HashSet<>(Collections.singletonList(SliceSpecs.LIST))); Loading Loading
packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java +23 −18 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import static android.app.slice.Slice.HINT_LIST_ITEM; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.Display.INVALID_DISPLAY; import static com.android.systemui.util.InjectionInflationController.VIEW_CONTEXT; import android.animation.LayoutTransition; import android.animation.ObjectAnimator; import android.animation.PropertyValuesHolder; Loading Loading @@ -60,6 +62,7 @@ import com.android.systemui.Dependency; import com.android.systemui.Interpolators; import com.android.systemui.R; import com.android.systemui.keyguard.KeyguardSliceProvider; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.tuner.TunerService; import com.android.systemui.util.wakelock.KeepAwakeAnimationListener; Loading @@ -70,6 +73,9 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import javax.inject.Inject; import javax.inject.Named; /** * View visible under the clock on the lock screen and AoD. */ Loading @@ -80,6 +86,8 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe public static final int DEFAULT_ANIM_DURATION = 550; private final HashMap<View, PendingIntent> mClickActions; private final ActivityStarter mActivityStarter; private final ConfigurationController mConfigurationController; private Uri mKeyguardSliceUri; @VisibleForTesting TextView mTitle; Loading @@ -99,16 +107,10 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe private final int mRowWithHeaderPadding; private final int mRowPadding; public KeyguardSliceView(Context context) { this(context, null, 0); } public KeyguardSliceView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public KeyguardSliceView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); @Inject public KeyguardSliceView(@Named(VIEW_CONTEXT) Context context, AttributeSet attrs, ActivityStarter activityStarter, ConfigurationController configurationController) { super(context, attrs); TunerService tunerService = Dependency.get(TunerService.class); tunerService.addTunable(this, Settings.Secure.KEYGUARD_SLICE_URI); Loading @@ -117,6 +119,8 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe mRowPadding = context.getResources().getDimensionPixelSize(R.dimen.subtitle_clock_padding); mRowWithHeaderPadding = context.getResources() .getDimensionPixelSize(R.dimen.header_subtitle_padding); mActivityStarter = activityStarter; mConfigurationController = configurationController; LayoutTransition transition = new LayoutTransition(); transition.setStagger(LayoutTransition.CHANGE_APPEARING, DEFAULT_ANIM_DURATION / 2); Loading @@ -137,6 +141,7 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe mRow = findViewById(R.id.row); mTextColor = Utils.getColorAttrDefaultColor(mContext, R.attr.wallpaperTextColor); mIconSize = (int) mContext.getResources().getDimension(R.dimen.widget_icon_size); mTitle.setOnClickListener(this); } @Override Loading @@ -146,7 +151,7 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe mDisplayId = getDisplay().getDisplayId(); // Make sure we always have the most current slice mLiveData.observeForever(this); Dependency.get(ConfigurationController.class).addCallback(this); mConfigurationController.addCallback(this); } @Override Loading @@ -157,7 +162,7 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe if (mDisplayId == DEFAULT_DISPLAY) { mLiveData.removeObserver(this); } Dependency.get(ConfigurationController.class).removeCallback(this); mConfigurationController.removeCallback(this); } /** Loading @@ -179,6 +184,7 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe Trace.endSection(); return; } mClickActions.clear(); ListContent lc = new ListContent(getContext(), mSlice); SliceContent headerContent = lc.getHeader(); Loading @@ -201,9 +207,12 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe SliceItem mainTitle = header.getTitleItem(); CharSequence title = mainTitle != null ? mainTitle.getText() : null; mTitle.setText(title); if (header.getPrimaryAction() != null && header.getPrimaryAction().getAction() != null) { mClickActions.put(mTitle, header.getPrimaryAction().getAction()); } } mClickActions.clear(); final int subItemsCount = subItems.size(); final int blendedColor = getTextColor(); final int startIndex = mHasHeader ? 1 : 0; // First item is header; skip it Loading Loading @@ -289,11 +298,7 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe public void onClick(View v) { final PendingIntent action = mClickActions.get(v); if (action != null) { try { action.send(); } catch (PendingIntent.CanceledException e) { Log.i(TAG, "Pending intent cancelled, nothing to launch", e); } mActivityStarter.startPendingIntentDismissingKeyguard(action); } } Loading
packages/SystemUI/src/com/android/systemui/util/InjectionInflationController.java +6 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.view.LayoutInflater; import android.view.View; import com.android.keyguard.KeyguardClockSwitch; import com.android.keyguard.KeyguardSliceView; import com.android.systemui.SystemUIFactory; import com.android.systemui.qs.QSCarrierGroup; import com.android.systemui.qs.QSFooterImpl; Loading Loading @@ -136,6 +137,11 @@ public class InjectionInflationController { * Creates the KeyguardClockSwitch. */ KeyguardClockSwitch createKeyguardClockSwitch(); /** * Creates the KeyguardSliceView. */ KeyguardSliceView createKeyguardSliceView(); } /** Loading
packages/SystemUI/tests/src/com/android/keyguard/KeyguardSliceViewTest.java +7 −1 Original line number Diff line number Diff line Loading @@ -27,8 +27,10 @@ import androidx.slice.SliceProvider; import androidx.slice.SliceSpecs; import androidx.slice.builders.ListBuilder; import com.android.systemui.SystemUIFactory; import com.android.systemui.SysuiTestCase; import com.android.systemui.keyguard.KeyguardSliceProvider; import com.android.systemui.util.InjectionInflationController; import org.junit.Assert; import org.junit.Before; Loading @@ -49,7 +51,11 @@ public class KeyguardSliceViewTest extends SysuiTestCase { @Before public void setUp() throws Exception { com.android.systemui.util.Assert.sMainLooper = TestableLooper.get(this).getLooper(); mKeyguardSliceView = (KeyguardSliceView) LayoutInflater.from(getContext()) InjectionInflationController inflationController = new InjectionInflationController( SystemUIFactory.getInstance().getRootComponent()); LayoutInflater layoutInflater = inflationController .injectable(LayoutInflater.from(getContext())); mKeyguardSliceView = (KeyguardSliceView) layoutInflater .inflate(R.layout.keyguard_status_area, null); mSliceUri = Uri.parse(KeyguardSliceProvider.KEYGUARD_SLICE_URI); SliceProvider.setSpecs(new HashSet<>(Collections.singletonList(SliceSpecs.LIST))); Loading