1 /*
2  * Copyright (C) 2014 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.example.android.support.wearable.notifications;
18 
19 import android.app.Notification;
20 import android.content.Context;
21 
22 /**
23  * Base class for notification preset generators.
24  */
25 public abstract class NotificationPreset extends NamedPreset {
26     public final int titleResId;
27     public final int textResId;
28 
NotificationPreset(int nameResId, int titleResId, int textResId)29     public NotificationPreset(int nameResId, int titleResId, int textResId) {
30         super(nameResId);
31         this.titleResId = titleResId;
32         this.textResId = textResId;
33     }
34 
35     public static class BuildOptions {
36         public final CharSequence titlePreset;
37         public final CharSequence textPreset;
38         public final PriorityPreset priorityPreset;
39         public final ActionsPreset actionsPreset;
40         public final boolean includeLargeIcon;
41         public final boolean isLocalOnly;
42         public final boolean hasContentIntent;
43         public final boolean vibrate;
44         public final Integer[] backgroundIds;
45 
BuildOptions(CharSequence titlePreset, CharSequence textPreset, PriorityPreset priorityPreset, ActionsPreset actionsPreset, boolean includeLargeIcon, boolean isLocalOnly, boolean hasContentIntent, boolean vibrate, Integer[] backgroundIds)46         public BuildOptions(CharSequence titlePreset, CharSequence textPreset,
47                 PriorityPreset priorityPreset, ActionsPreset actionsPreset,
48                 boolean includeLargeIcon, boolean isLocalOnly, boolean hasContentIntent,
49                 boolean vibrate, Integer[] backgroundIds) {
50             this.titlePreset = titlePreset;
51             this.textPreset = textPreset;
52             this.priorityPreset = priorityPreset;
53             this.actionsPreset = actionsPreset;
54             this.includeLargeIcon = includeLargeIcon;
55             this.isLocalOnly = isLocalOnly;
56             this.hasContentIntent = hasContentIntent;
57             this.vibrate = vibrate;
58             this.backgroundIds = backgroundIds;
59         }
60     }
61 
62     /** Build a notification with this preset and the provided options */
buildNotifications(Context context, BuildOptions options)63     public abstract Notification[] buildNotifications(Context context, BuildOptions options);
64 
65     /** Whether actions are required to use this preset. */
actionsRequired()66     public boolean actionsRequired() {
67         return false;
68     }
69 
70     /** Number of background pickers required */
countBackgroundPickersRequired()71     public int countBackgroundPickersRequired() {
72         return 0;
73     }
74 }
75