1 package com.example.android.wearable.wear.wearnotifications.mock;
2 
3 import android.support.v4.app.NotificationCompat.MessagingStyle;
4 
5 import com.example.android.wearable.wear.wearnotifications.R;
6 
7 import java.util.ArrayList;
8 
9 /**
10  * Mock data for each of the Notification Style Demos.
11  */
12 public final class MockDatabase {
13 
getBigTextStyleData()14     public static BigTextStyleReminderAppData getBigTextStyleData() {
15         return BigTextStyleReminderAppData.getInstance();
16     }
17 
getBigPictureStyleData()18     public static BigPictureStyleSocialAppData getBigPictureStyleData() {
19         return BigPictureStyleSocialAppData.getInstance();
20     }
21 
getInboxStyleData()22     public static InboxStyleEmailAppData getInboxStyleData() {
23         return InboxStyleEmailAppData.getInstance();
24     }
25 
getMessagingStyleData()26     public static MessagingStyleCommsAppData getMessagingStyleData() {
27         return MessagingStyleCommsAppData.getInstance();
28     }
29 
30     /**
31      * Represents data needed for BigTextStyle Notification.
32      */
33     public static class BigTextStyleReminderAppData {
34 
35         private static BigTextStyleReminderAppData sInstance = null;
36 
37         // Standard notification values
38         private String mContentTitle;
39         private String mContentText;
40 
41         // Style notification values
42         private String mBigContentTitle;
43         private String mBigText;
44         private String mSummaryText;
45 
46 
getInstance()47         public static BigTextStyleReminderAppData getInstance() {
48             if (sInstance == null) {
49                 sInstance = getSync();
50             }
51 
52             return sInstance;
53         }
54 
getSync()55         private static synchronized BigTextStyleReminderAppData getSync() {
56             if (sInstance == null) {
57                 sInstance = new BigTextStyleReminderAppData();
58             }
59 
60             return sInstance;
61         }
62 
BigTextStyleReminderAppData()63         private BigTextStyleReminderAppData() {
64             // Standard Notification values
65             // Title for API <16 (4.0 and below) devices
66             mContentTitle = "Don't forget to...";
67             // Content for API <24 (4.0 and below) devices
68             mContentText = "Feed Dogs and check garage!";
69 
70             // BigText Style Notification values
71             mBigContentTitle = "Don't forget to...";
72             mBigText = "... feed the dogs before you leave for work, and check the garage to "
73                             + "make sure the door is closed.";
74             mSummaryText = "Dogs and Garage";
75         }
getContentTitle()76         public String getContentTitle() {
77             return mContentTitle;
78         }
79 
getContentText()80         public String getContentText() {
81             return mContentText;
82         }
83 
getBigContentTitle()84         public String getBigContentTitle() {
85             return mBigContentTitle;
86         }
87 
getBigText()88         public String getBigText() {
89             return mBigText;
90         }
91 
getSummaryText()92         public String getSummaryText() {
93             return mSummaryText;
94         }
95 
96         @Override
toString()97         public String toString() {
98             return getBigContentTitle() + getBigText();
99         }
100     }
101 
102     /**
103      * Represents data needed for BigPictureStyle Notification.
104      */
105     public static class BigPictureStyleSocialAppData {
106         private static BigPictureStyleSocialAppData sInstance = null;
107 
108         // Standard notification values
109         private String mContentTitle;
110         private String mContentText;
111 
112         // Style notification values
113         private int mBigImage;
114         private String mBigContentTitle;
115         private String mSummaryText;
116 
117         private CharSequence[] mPossiblePostResponses;
118 
119         private ArrayList<String> mParticipants;
120 
121 
getInstance()122         public static BigPictureStyleSocialAppData getInstance() {
123             if (sInstance == null) {
124                 sInstance = getSync();
125             }
126             return sInstance;
127         }
128 
getSync()129         private static synchronized BigPictureStyleSocialAppData getSync() {
130             if (sInstance == null) {
131                 sInstance = new BigPictureStyleSocialAppData();
132             }
133 
134             return sInstance;
135         }
136 
BigPictureStyleSocialAppData()137         private BigPictureStyleSocialAppData() {
138             // Standard Notification values
139             // Title/Content for API <16 (4.0 and below) devices
140             mContentTitle = "Bob's Post";
141             mContentText = "[Picture] Like my shot of Earth?";
142 
143             // Style notification values
144             mBigImage = R.drawable.earth;
145             mBigContentTitle = "Bob's Post";
146             mSummaryText = "Like my shot of Earth?";
147 
148             // This would be possible responses based on the contents of the post
149             mPossiblePostResponses = new CharSequence[]{"Yes", "No", "Maybe?"};
150 
151             mParticipants = new ArrayList<>();
152             mParticipants.add("Bob Smith");
153         }
154 
getContentTitle()155         public String getContentTitle() {
156             return mContentTitle;
157         }
158 
getContentText()159         public String getContentText() {
160             return mContentText;
161         }
162 
getBigImage()163         public int getBigImage() {
164             return mBigImage;
165         }
166 
getBigContentTitle()167         public String getBigContentTitle() {
168             return mBigContentTitle;
169         }
170 
getSummaryText()171         public String getSummaryText() {
172             return mSummaryText;
173         }
174 
getPossiblePostResponses()175         public CharSequence[] getPossiblePostResponses() {
176             return mPossiblePostResponses;
177         }
178 
getParticipants()179         public ArrayList<String> getParticipants() {
180             return mParticipants;
181         }
182 
183         @Override
toString()184         public String toString() {
185             return getContentTitle() + " - " + getContentText();
186         }
187     }
188 
189     /**
190      * Represents data needed for InboxStyle Notification.
191      */
192     public static class InboxStyleEmailAppData {
193         private static InboxStyleEmailAppData sInstance = null;
194 
195         // Standard notification values
196         private String mContentTitle;
197         private String mContentText;
198         private int mNumberOfNewEmails;
199 
200         // Style notification values
201         private String mBigContentTitle;
202         private String mSummaryText;
203         private ArrayList<String> mIndividualEmailSummary;
204 
205         private ArrayList<String> mParticipants;
206 
getInstance()207         public static InboxStyleEmailAppData getInstance() {
208             if (sInstance == null) {
209                 sInstance = getSync();
210             }
211             return sInstance;
212         }
213 
getSync()214         private static synchronized InboxStyleEmailAppData getSync() {
215             if (sInstance == null) {
216                 sInstance = new InboxStyleEmailAppData();
217             }
218 
219             return sInstance;
220         }
221 
InboxStyleEmailAppData()222         private InboxStyleEmailAppData() {
223             // Standard Notification values
224             // Title/Content for API <16 (4.0 and below) devices
225             mContentTitle = "5 new emails";
226             mContentText = "from Jane, Jay, Alex +2 more";
227             mNumberOfNewEmails = 5;
228 
229             // Style notification values
230             mBigContentTitle = "5 new emails from Jane, Jay, Alex +2";
231             mSummaryText = "New emails";
232 
233             // Add each summary line of the new emails, you can add up to 5
234             mIndividualEmailSummary = new ArrayList<>();
235             mIndividualEmailSummary.add("Jane Faab  -   Launch Party is here...");
236             mIndividualEmailSummary.add("Jay Walker -   There's a turtle on the server!");
237             mIndividualEmailSummary.add("Alex Chang -   Check this out...");
238             mIndividualEmailSummary.add("Jane Johns -   Check in code?");
239             mIndividualEmailSummary.add("John Smith -   Movies later....");
240 
241             // If the phone is in "Do not disturb mode, the user will still be notified if
242             // the user(s) is starred as a favorite.
243             mParticipants = new ArrayList<>();
244             mParticipants.add("Jane Faab");
245             mParticipants.add("Jay Walker");
246             mParticipants.add("Alex Chang");
247             mParticipants.add("Jane Johns");
248             mParticipants.add("John Smith");
249         }
250 
getContentTitle()251         public String getContentTitle() {
252             return mContentTitle;
253         }
254 
getContentText()255         public String getContentText() {
256             return mContentText;
257         }
258 
getNumberOfNewEmails()259         public int getNumberOfNewEmails() {
260             return mNumberOfNewEmails;
261         }
262 
getBigContentTitle()263         public String getBigContentTitle() {
264             return mBigContentTitle;
265         }
266 
getSummaryText()267         public String getSummaryText() {
268             return mSummaryText;
269         }
270 
getIndividualEmailSummary()271         public ArrayList<String> getIndividualEmailSummary() {
272             return mIndividualEmailSummary;
273         }
274 
getParticipants()275         public ArrayList<String> getParticipants() {
276             return mParticipants;
277         }
278 
279         @Override
toString()280         public String toString() {
281             return getContentTitle() + " " + getContentText();
282         }
283     }
284 
285     /**
286      * Represents data needed for MessagingStyle Notification.
287      */
288     public static class MessagingStyleCommsAppData {
289 
290         private static MessagingStyleCommsAppData sInstance = null;
291 
292         // Standard notification values
293         private String mContentTitle;
294         private String mContentText;
295 
296         // Style notification values
297         private ArrayList<MessagingStyle.Message> mMessages;
298         // Basically, String of all mMessages
299         private String mFullConversation;
300         // Name preferred when replying to chat
301         private String mReplayName;
302         private int mNumberOfNewMessages;
303         private ArrayList<String> mParticipants;
304 
getInstance()305         public static MessagingStyleCommsAppData getInstance() {
306             if (sInstance == null) {
307                 sInstance = getSync();
308             }
309             return sInstance;
310         }
311 
getSync()312         private static synchronized MessagingStyleCommsAppData getSync() {
313             if (sInstance == null) {
314                 sInstance = new MessagingStyleCommsAppData();
315             }
316 
317             return sInstance;
318         }
319 
MessagingStyleCommsAppData()320         private MessagingStyleCommsAppData() {
321             // Standard notification values
322             // Content for API <24 (M and below) devices
323             mContentTitle = "2 Messages w/ Famous McFamously";
324             mContentText = "Dude! ... You know I am a Pesce-pescetarian. :P";
325 
326             // Style notification values
327 
328             // For each message, you need the timestamp, in this case, we are using arbitrary ones.
329             long currentTime = System.currentTimeMillis();
330 
331             mMessages = new ArrayList<>();
332             mMessages.add(new MessagingStyle.Message(
333                     "What are you doing tonight?", currentTime - 4000, "Famous"));
334             mMessages.add(new MessagingStyle.Message(
335                     "I don't know, dinner maybe?", currentTime - 3000, null));
336             mMessages.add(new MessagingStyle.Message(
337                     "Sounds good.", currentTime - 2000, "Famous"));
338             mMessages.add(new MessagingStyle.Message(
339                     "How about BBQ?", currentTime - 1000, null));
340             // Last two are the newest message (2) from friend
341             mMessages.add(new MessagingStyle.Message(
342                     "Dude!", currentTime, "Famous"));
343             mMessages.add(new MessagingStyle.Message(
344                     "You know I am a Pesce-pescetarian. :P", currentTime, "Famous"));
345 
346 
347             // String version of the mMessages above
348             mFullConversation = "Famous: What are you doing tonight?\n\n"
349                     + "Me: I don't know, dinner maybe?\n\n"
350                     + "Famous: Sounds good.\n\n"
351                     + "Me: How about BBQ?\n\n"
352                     + "Famous: Dude!\n\n"
353                     + "Famous: You know I am a Pesce-pescetarian. :P\n\n";
354 
355             mNumberOfNewMessages = 2;
356 
357             // Name preferred when replying to chat
358             mReplayName = "Me";
359 
360             // If the phone is in "Do not disturb mode, the user will still be notified if
361             // the user(s) is starred as a favorite.
362             mParticipants = new ArrayList<>();
363             mParticipants.add("Famous McFamously");
364 
365         }
366 
getContentTitle()367         public String getContentTitle() {
368             return mContentTitle;
369         }
370 
getContentText()371         public String getContentText() {
372             return mContentText;
373         }
374 
getMessages()375         public ArrayList<MessagingStyle.Message> getMessages() {
376             return mMessages;
377         }
378 
getFullConversation()379         public String getFullConversation() {
380             return mFullConversation;
381         }
382 
getReplayName()383         public String getReplayName() {
384             return mReplayName;
385         }
386 
getNumberOfNewMessages()387         public int getNumberOfNewMessages() {
388             return mNumberOfNewMessages;
389         }
390 
getParticipants()391         public ArrayList<String> getParticipants() {
392             return mParticipants;
393         }
394 
395         @Override
toString()396         public String toString() {
397             return getFullConversation();
398         }
399     }
400 }