Make KeyguardSliceView title tappable
Bug: 129877485
Test: manual with caldendar event
Change-Id: I413f9c92541f7b7d8ee8a766a43f3086b88aa7f8
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
index 8ebe1ae..c1bf4d4 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
@@ -20,6 +20,8 @@
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;
@@ -60,6 +62,7 @@
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;
@@ -70,6 +73,9 @@
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.
*/
@@ -80,6 +86,8 @@
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;
@@ -99,16 +107,10 @@
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);
@@ -117,6 +119,8 @@
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);
@@ -137,6 +141,7 @@
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
@@ -146,7 +151,7 @@
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
@@ -157,7 +162,7 @@
if (mDisplayId == DEFAULT_DISPLAY) {
mLiveData.removeObserver(this);
}
- Dependency.get(ConfigurationController.class).removeCallback(this);
+ mConfigurationController.removeCallback(this);
}
/**
@@ -179,6 +184,7 @@
Trace.endSection();
return;
}
+ mClickActions.clear();
ListContent lc = new ListContent(getContext(), mSlice);
SliceContent headerContent = lc.getHeader();
@@ -201,9 +207,12 @@
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
@@ -289,11 +298,7 @@
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);
}
}