diff options
Diffstat (limited to 'SlicesApp/src/com/android/experimental/slicesapp/SlicesProvider.java')
-rw-r--r-- | SlicesApp/src/com/android/experimental/slicesapp/SlicesProvider.java | 101 |
1 files changed, 75 insertions, 26 deletions
diff --git a/SlicesApp/src/com/android/experimental/slicesapp/SlicesProvider.java b/SlicesApp/src/com/android/experimental/slicesapp/SlicesProvider.java index 32a6704..226bbcc 100644 --- a/SlicesApp/src/com/android/experimental/slicesapp/SlicesProvider.java +++ b/SlicesApp/src/com/android/experimental/slicesapp/SlicesProvider.java @@ -22,7 +22,6 @@ import android.app.slice.SliceProvider; import android.content.ContentResolver; import android.content.Intent; import android.content.SharedPreferences; -import android.graphics.Color; import android.graphics.drawable.Icon; import android.net.Uri; import android.text.format.DateUtils; @@ -34,7 +33,9 @@ import java.util.function.Consumer; public class SlicesProvider extends SliceProvider { private static final String TAG = "SliceProvider"; - private static final String INTENT_ACTION = "android.intent.action.EXAMPLE_ACTION"; + public static final String SLICE_INTENT = "android.intent.action.EXAMPLE_SLICE_INTENT"; + public static final String SLICE_ACTION = "android.intent.action.EXAMPLE_SLICE_ACTION"; + public static final String INTENT_ACTION_EXTRA = "android.intent.slicesapp.INTENT_ACTION_EXTRA"; private final int NUM_LIST_ITEMS = 10; @@ -56,7 +57,7 @@ public class SlicesProvider extends SliceProvider { //@Override public Uri onMapIntentToUri(Intent intent) { - if (intent.getAction().equals(INTENT_ACTION)) { + if (intent.getAction().equals(SLICE_INTENT)) { return getIntentUri(); } return null;//super.onMapIntentToUri(intent); @@ -84,32 +85,26 @@ public class SlicesProvider extends SliceProvider { type = "Intent"; } switch (type) { - case "Shortcut": - b.addColor(Color.CYAN).addIcon( - Icon.createWithResource(getContext(), R.drawable.mady), - Slice.HINT_LARGE); - break; case "Single-line": b.addSubSlice(makeList(new Slice.Builder(b), this::makeSingleLine, this::addIcon)); - addColorIcon(b); + addPrimaryAction(b); break; case "Single-line action": b.addSubSlice(makeList(new Slice.Builder(b), this::makeSingleLine, this::addAltActions)); - addColorIcon(b); + addPrimaryAction(b); break; case "Two-line": b.addSubSlice(makeList(new Slice.Builder(b), this::makeTwoLine, this::addIcon)); - addColorIcon(b); + addPrimaryAction(b); break; case "Two-line action": b.addSubSlice(makeList(new Slice.Builder(b), this::makeTwoLine, this::addAltActions)); - addColorIcon(b); + addPrimaryAction(b); break; - case "Grid": case "Weather": b.addSubSlice(createWeather(new Slice.Builder(b))); break; @@ -125,6 +120,12 @@ public class SlicesProvider extends SliceProvider { case "Intent": b.addSubSlice(createIntentSlice(new Slice.Builder(b))); break; + case "Settings": + createSettingsSlice(b); + break; + case "Settings content": + createSettingsContentSlice(b); + break; } if (mSharedPrefs.getBoolean("show_action_row", false)) { Intent intent = new Intent(getContext(), SlicesActivity.class); @@ -150,23 +151,28 @@ public class SlicesProvider extends SliceProvider { private Slice createWeather(Builder grid) { grid.addHints(Slice.HINT_HORIZONTAL); grid.addSubSlice(new Slice.Builder(grid) - .addIcon(Icon.createWithResource(getContext(), R.drawable.weather_1)) + .addIcon(Icon.createWithResource(getContext(), R.drawable.weather_1), + Slice.HINT_LARGE) .addText("MON") .addText("69\u00B0", Slice.HINT_LARGE).build()); grid.addSubSlice(new Slice.Builder(grid) - .addIcon(Icon.createWithResource(getContext(), R.drawable.weather_2)) + .addIcon(Icon.createWithResource(getContext(), R.drawable.weather_2), + Slice.HINT_LARGE) .addText("TUE") .addText("71\u00B0", Slice.HINT_LARGE).build()); grid.addSubSlice(new Slice.Builder(grid) - .addIcon(Icon.createWithResource(getContext(), R.drawable.weather_3)) + .addIcon(Icon.createWithResource(getContext(), R.drawable.weather_3), + Slice.HINT_LARGE) .addText("WED") .addText("76\u00B0", Slice.HINT_LARGE).build()); grid.addSubSlice(new Slice.Builder(grid) - .addIcon(Icon.createWithResource(getContext(), R.drawable.weather_4)) + .addIcon(Icon.createWithResource(getContext(), R.drawable.weather_4), + Slice.HINT_LARGE) .addText("THU") .addText("69\u00B0", Slice.HINT_LARGE).build()); grid.addSubSlice(new Slice.Builder(grid) - .addIcon(Icon.createWithResource(getContext(), R.drawable.weather_2)) + .addIcon(Icon.createWithResource(getContext(), R.drawable.weather_2), + Slice.HINT_LARGE) .addText("FRI") .addText("71\u00B0", Slice.HINT_LARGE).build()); return grid.build(); @@ -178,7 +184,8 @@ public class SlicesProvider extends SliceProvider { .addHints(Slice.HINT_MESSAGE) .addText("yo home \uD83C\uDF55, I emailed you the info") .addTimestamp(System.currentTimeMillis() - 20 * DateUtils.MINUTE_IN_MILLIS) - .addIcon(Icon.createWithResource(getContext(), R.drawable.mady), Slice.HINT_SOURCE) + .addIcon(Icon.createWithResource(getContext(), R.drawable.mady), Slice.HINT_SOURCE, + Slice.HINT_TITLE, Slice.HINT_LARGE) .build()); b2.addSubSlice(new Builder(b2) .addHints(Slice.HINT_MESSAGE) @@ -190,7 +197,8 @@ public class SlicesProvider extends SliceProvider { .addText("yay! can't wait for getContext() weekend!\n" + "\uD83D\uDE00") .addTimestamp(System.currentTimeMillis() - 5 * DateUtils.MINUTE_IN_MILLIS) - .addIcon(Icon.createWithResource(getContext(), R.drawable.mady), Slice.HINT_SOURCE) + .addIcon(Icon.createWithResource(getContext(), R.drawable.mady), Slice.HINT_SOURCE, + Slice.HINT_LARGE) .build()); RemoteInput ri = new RemoteInput.Builder("someKey").setLabel("someLabel") .setAllowFreeFormInput(true).build(); @@ -226,9 +234,15 @@ public class SlicesProvider extends SliceProvider { b.addText("Secondary text"); } - private void addColorIcon(Builder b) { - b.addColor(0xFFFF5722); - b.addIcon(Icon.createWithResource(getContext(), R.drawable.ic_slice)); + private void addPrimaryAction(Builder b) { + Intent intent = new Intent(getContext(), SlicesActivity.class); + PendingIntent pi = PendingIntent.getActivity(getContext(), 0, intent, 0); + b.addSubSlice(new Slice.Builder(b).addAction(pi, + new Slice.Builder(b).addColor(0xFFFF5722) + .addIcon(Icon.createWithResource(getContext(), R.drawable.ic_slice), + Slice.HINT_TITLE) + .addText("Slice App", Slice.HINT_TITLE) + .build()).addHints(Slice.HINT_HIDDEN, Slice.HINT_TITLE).build()); } private Slice makeList(Builder list, Consumer<Builder> lineCreator, @@ -270,8 +284,7 @@ public class SlicesProvider extends SliceProvider { private Slice createMapsMulti(Builder b) { Intent intent = new Intent(getContext(), SlicesActivity.class); PendingIntent pi = PendingIntent.getActivity(getContext(), 0, intent, 0); - - b.addHints(Slice.HINT_HORIZONTAL, Slice.HINT_LIST).addColor(0xff0B8043); + b.addHints(Slice.HINT_HORIZONTAL, Slice.HINT_LIST); b.addSubSlice(new Slice.Builder(b) .addAction(pi, new Slice.Builder(b) .addIcon(Icon.createWithResource(getContext(), R.drawable.ic_home)).build()) @@ -284,9 +297,10 @@ public class SlicesProvider extends SliceProvider { .addText("1 hour 23 min").build()); b.addSubSlice(new Slice.Builder(b) .addAction(pi, new Slice.Builder(b) - .addIcon(Icon.createWithResource(getContext(), R.drawable.ic_home)).build()) + .addIcon(Icon.createWithResource(getContext(), R.drawable.ic_car)).build()) .addText("Mom's", Slice.HINT_LARGE) .addText("37 min").build()); + b.addColor(0xff0B8043); return b.build(); } @@ -310,4 +324,39 @@ public class SlicesProvider extends SliceProvider { .addText("Previous", Slice.HINT_LARGE).build()); return b.build(); } + + private Slice.Builder createSettingsSlice(Builder b) { + b.addSubSlice(new Slice.Builder(b) + .addAction(getIntent("toggled"), new Slice.Builder(b) + .addText("Wi-fi") + .addText("GoogleGuest") + .addHints(Slice.HINT_TOGGLE, Slice.HINT_SELECTED) + .build()) + .build()); + return b; + } + + private Slice.Builder createSettingsContentSlice(Builder b) { + b.addSubSlice(new Slice.Builder(b) + .addAction(getIntent("main content"), + new Slice.Builder(b) + .addText("Wi-fi") + .addText("GoogleGuest") + .build()) + .addAction(getIntent("toggled"), + new Slice.Builder(b) + .addHints(Slice.HINT_TOGGLE, Slice.HINT_SELECTED) + .build()) + .build()); + return b; + } + + private PendingIntent getIntent(String message) { + Intent intent = new Intent(SLICE_ACTION); + intent.setClass(getContext(), SlicesBroadcastReceiver.class); + intent.putExtra(INTENT_ACTION_EXTRA, message); + PendingIntent pi = PendingIntent.getBroadcast(getContext(), 0, intent, + PendingIntent.FLAG_CANCEL_CURRENT); + return pi; + } } |