Merge "Add a primary action to slices from keyguard slice provider" into pi-dev

This commit is contained in:
Mady Mellor
2018-05-31 18:50:26 +00:00
committed by Android (Google) Code Review
2 changed files with 27 additions and 1 deletions

View File

@@ -52,6 +52,7 @@ import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.tuner.TunerService;
import com.android.systemui.util.wakelock.KeepAwakeAnimationListener;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.function.Consumer;
@@ -157,7 +158,15 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe
ListContent lc = new ListContent(getContext(), mSlice);
mHasHeader = lc.hasHeader();
List<SliceItem> subItems = lc.getRowItems();
List<SliceItem> subItems = new ArrayList<SliceItem>();
for (int i = 0; i < lc.getRowItems().size(); i++) {
SliceItem subItem = lc.getRowItems().get(i);
String itemUri = subItem.getSlice().getUri().toString();
// Filter out the action row
if (!KeyguardSliceProvider.KEYGUARD_ACTION_URI.equals(itemUri)) {
subItems.add(subItem);
}
}
if (!mHasHeader) {
mTitle.setVisibility(GONE);
} else {

View File

@@ -19,6 +19,7 @@ package com.android.systemui.keyguard;
import android.app.ActivityManager;
import android.app.AlarmManager;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
@@ -48,6 +49,7 @@ import androidx.slice.Slice;
import androidx.slice.SliceProvider;
import androidx.slice.builders.ListBuilder;
import androidx.slice.builders.ListBuilder.RowBuilder;
import androidx.slice.builders.SliceAction;
/**
* Simple Slice provider that shows the current date.
@@ -60,6 +62,8 @@ public class KeyguardSliceProvider extends SliceProvider implements
public static final String KEYGUARD_NEXT_ALARM_URI =
"content://com.android.systemui.keyguard/alarm";
public static final String KEYGUARD_DND_URI = "content://com.android.systemui.keyguard/dnd";
public static final String KEYGUARD_ACTION_URI =
"content://com.android.systemui.keyguard/action";
/**
* Only show alarms that will ring within N hours.
@@ -127,9 +131,22 @@ public class KeyguardSliceProvider extends SliceProvider implements
builder.addRow(new RowBuilder(builder, mDateUri).setTitle(mLastText));
addNextAlarm(builder);
addZenMode(builder);
addPrimaryAction(builder);
return builder.build();
}
protected void addPrimaryAction(ListBuilder builder) {
// Add simple action because API requires it; Keyguard handles presenting
// its own slices so this action + icon are actually never used.
PendingIntent pi = PendingIntent.getActivity(getContext(), 0, new Intent(), 0);
Icon icon = Icon.createWithResource(getContext(), R.drawable.ic_access_alarms_big);
SliceAction action = new SliceAction(pi, icon, mLastText);
RowBuilder primaryActionRow = new RowBuilder(builder, Uri.parse(KEYGUARD_ACTION_URI))
.setPrimaryAction(action);
builder.addRow(primaryActionRow);
}
protected void addNextAlarm(ListBuilder builder) {
if (TextUtils.isEmpty(mNextAlarm)) {
return;