summaryrefslogtreecommitdiff
path: root/packages/SystemUI/src/com/android/keyguard/KeyguardSliceViewController.java
diff options
context:
space:
mode:
authorDave Mankoff <mankoff@google.com>2020-08-03 11:51:50 -0400
committerDave Mankoff <mankoff@google.com>2020-08-24 12:57:23 -0400
commit93dd88388b075e21f7deae648c553335fd49805c (patch)
treecddc1569d4b98cd80a05d1c35e112b831735aff3 /packages/SystemUI/src/com/android/keyguard/KeyguardSliceViewController.java
parentcd42c08702ef6cc25b974521ef9376e3b0d48bf8 (diff)
Remove ref to Controller from KeyguardSliceView
This removes the reference that the view has to its controller, moving click handling up to the controller. Fixes: 162525274 Test: atest SystemUITEsts Change-Id: Ia99ff4e643fa84fa138720cc5c01c51597f1169d
Diffstat (limited to 'packages/SystemUI/src/com/android/keyguard/KeyguardSliceViewController.java')
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardSliceViewController.java62
1 files changed, 56 insertions, 6 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceViewController.java
index 68fa0b010a3e..35a2392ba1cf 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceViewController.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceViewController.java
@@ -16,8 +16,10 @@
package com.android.keyguard;
+import static android.app.slice.Slice.HINT_LIST_ITEM;
import static android.view.Display.DEFAULT_DISPLAY;
+import android.app.PendingIntent;
import android.net.Uri;
import android.os.Trace;
import android.provider.Settings;
@@ -30,6 +32,9 @@ import androidx.lifecycle.LiveData;
import androidx.lifecycle.Observer;
import androidx.slice.Slice;
import androidx.slice.SliceViewManager;
+import androidx.slice.widget.ListContent;
+import androidx.slice.widget.RowContent;
+import androidx.slice.widget.SliceContent;
import androidx.slice.widget.SliceLiveData;
import com.android.keyguard.dagger.KeyguardStatusViewScope;
@@ -42,15 +47,19 @@ import com.android.systemui.tuner.TunerService;
import java.io.FileDescriptor;
import java.io.PrintWriter;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
import javax.inject.Inject;
/** Controller for a {@link KeyguardSliceView}. */
@KeyguardStatusViewScope
public class KeyguardSliceViewController implements Dumpable {
- private static final String TAG = "KeyguardSliceViewController";
+ private static final String TAG = "KeyguardSliceViewCtrl";
private final KeyguardSliceView mView;
+ private final KeyguardStatusView mKeyguardStatusView;
private final ActivityStarter mActivityStarter;
private final ConfigurationController mConfigurationController;
private final TunerService mTunerService;
@@ -59,6 +68,7 @@ public class KeyguardSliceViewController implements Dumpable {
private LiveData<Slice> mLiveData;
private Uri mKeyguardSliceUri;
private Slice mSlice;
+ private Map<View, PendingIntent> mClickActions;
private final View.OnAttachStateChangeListener mOnAttachStateChangeListener =
new View.OnAttachStateChangeListener() {
@@ -106,15 +116,27 @@ public class KeyguardSliceViewController implements Dumpable {
@Override
public void onChanged(Slice slice) {
mSlice = slice;
- mView.showSlice(slice);
+ showSlice(slice);
+ }
+ };
+
+ private View.OnClickListener mOnClickListener = new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ final PendingIntent action = mClickActions.get(v);
+ if (action != null && mActivityStarter != null) {
+ mActivityStarter.startPendingIntentDismissingKeyguard(action);
+ }
}
};
@Inject
public KeyguardSliceViewController(KeyguardSliceView keyguardSliceView,
- ActivityStarter activityStarter, ConfigurationController configurationController,
- TunerService tunerService, DumpManager dumpManager) {
+ KeyguardStatusView keyguardStatusView, ActivityStarter activityStarter,
+ ConfigurationController configurationController, TunerService tunerService,
+ DumpManager dumpManager) {
mView = keyguardSliceView;
+ mKeyguardStatusView = keyguardStatusView;
mActivityStarter = activityStarter;
mConfigurationController = configurationController;
mTunerService = tunerService;
@@ -127,8 +149,9 @@ public class KeyguardSliceViewController implements Dumpable {
mOnAttachStateChangeListener.onViewAttachedToWindow(mView);
}
mView.addOnAttachStateChangeListener(mOnAttachStateChangeListener);
- mView.setActivityStarter(mActivityStarter);
- mView.setController(this); // TODO: remove this.
+ mView.setOnClickListener(mOnClickListener);
+ // TODO: remove the line below.
+ mKeyguardStatusView.setKeyguardSliceViewController(this);
}
/**
@@ -177,8 +200,35 @@ public class KeyguardSliceViewController implements Dumpable {
Trace.endSection();
}
+ void showSlice(Slice slice) {
+ Trace.beginSection("KeyguardSliceViewController#showSlice");
+ if (slice == null) {
+ mView.hideSlice();
+ Trace.endSection();
+ return;
+ }
+
+ ListContent lc = new ListContent(slice);
+ RowContent headerContent = lc.getHeader();
+ boolean hasHeader =
+ headerContent != null && !headerContent.getSliceItem().hasHint(HINT_LIST_ITEM);
+
+ List<SliceContent> subItems = lc.getRowItems().stream().filter(sliceContent -> {
+ String itemUri = sliceContent.getSliceItem().getSlice().getUri().toString();
+ // Filter out the action row
+ return !KeyguardSliceProvider.KEYGUARD_ACTION_URI.equals(itemUri);
+ }).collect(Collectors.toList());
+
+
+ mClickActions = mView.showSlice(hasHeader ? headerContent : null, subItems);
+
+ Trace.endSection();
+ }
+
+
@Override
public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
pw.println(" mSlice: " + mSlice);
+ pw.println(" mClickActions: " + mClickActions);
}
}