diff options
Diffstat (limited to 'apps/NotificationStudio/src/com/android/notificationstudio/generator/NotificationGenerator.java')
-rw-r--r-- | apps/NotificationStudio/src/com/android/notificationstudio/generator/NotificationGenerator.java | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/apps/NotificationStudio/src/com/android/notificationstudio/generator/NotificationGenerator.java b/apps/NotificationStudio/src/com/android/notificationstudio/generator/NotificationGenerator.java new file mode 100644 index 000000000..64b4ece28 --- /dev/null +++ b/apps/NotificationStudio/src/com/android/notificationstudio/generator/NotificationGenerator.java @@ -0,0 +1,131 @@ +/* + * Copyright 2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.notificationstudio.generator; +import static com.android.notificationstudio.model.EditableItem.ACTION1_ICON; +import static com.android.notificationstudio.model.EditableItem.ACTION1_TEXT; +import static com.android.notificationstudio.model.EditableItem.ACTION2_ICON; +import static com.android.notificationstudio.model.EditableItem.ACTION2_TEXT; +import static com.android.notificationstudio.model.EditableItem.ACTION3_ICON; +import static com.android.notificationstudio.model.EditableItem.ACTION3_TEXT; +import static com.android.notificationstudio.model.EditableItem.BIG_CONTENT_TITLE; +import static com.android.notificationstudio.model.EditableItem.BIG_TEXT; +import static com.android.notificationstudio.model.EditableItem.CONTENT_INFO; +import static com.android.notificationstudio.model.EditableItem.CONTENT_TEXT; +import static com.android.notificationstudio.model.EditableItem.CONTENT_TITLE; +import static com.android.notificationstudio.model.EditableItem.LARGE_ICON; +import static com.android.notificationstudio.model.EditableItem.LINES; +import static com.android.notificationstudio.model.EditableItem.NUMBER; +import static com.android.notificationstudio.model.EditableItem.PICTURE; +import static com.android.notificationstudio.model.EditableItem.PROGRESS; +import static com.android.notificationstudio.model.EditableItem.SMALL_ICON; +import static com.android.notificationstudio.model.EditableItem.STYLE; +import static com.android.notificationstudio.model.EditableItem.SUB_TEXT; +import static com.android.notificationstudio.model.EditableItem.SUMMARY_TEXT; +import static com.android.notificationstudio.model.EditableItem.USES_CHRON; +import static com.android.notificationstudio.model.EditableItem.WHEN; + +import android.app.Notification; +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.support.v4.app.NotificationCompat; +import android.support.v4.app.NotificationCompat.BigPictureStyle; +import android.support.v4.app.NotificationCompat.BigTextStyle; +import android.support.v4.app.NotificationCompat.InboxStyle; + +import com.android.notificationstudio.model.EditableItemConstants; + +public class NotificationGenerator implements EditableItemConstants { + + public static Notification build(Context context) { + + PendingIntent noop = PendingIntent.getActivity(context, 0, new Intent(), 0); + + NotificationCompat.Builder builder = new NotificationCompat.Builder(context); + if (SMALL_ICON.hasValue()) + builder.setSmallIcon(SMALL_ICON.getValueInt()); + if (CONTENT_TITLE.hasValue()) + builder.setContentTitle(CONTENT_TITLE.getValueString()); + if (CONTENT_TEXT.hasValue()) + builder.setContentText(CONTENT_TEXT.getValueString()); + if (SUB_TEXT.hasValue()) + builder.setSubText(SUB_TEXT.getValueString()); + if (LARGE_ICON.hasValue()) + builder.setLargeIcon(LARGE_ICON.getValueBitmap()); + if (CONTENT_INFO.hasValue()) + builder.setContentInfo(CONTENT_INFO.getValueString()); + if (NUMBER.hasValue()) + builder.setNumber(NUMBER.getValueInt()); + if (WHEN.hasValue()) + builder.setWhen(WHEN.getValueLong()); + if (PROGRESS.hasValue() && PROGRESS.getValueBool()) + builder.setProgress(0, 0, true); + if (USES_CHRON.hasValue()) + builder.setUsesChronometer(USES_CHRON.getValueBool()); + if (ACTION1_ICON.hasValue()) + builder.addAction(ACTION1_ICON.getValueInt(), ACTION1_TEXT.getValueString(), noop); + if (ACTION2_ICON.hasValue()) + builder.addAction(ACTION2_ICON.getValueInt(), ACTION2_TEXT.getValueString(), noop); + if (ACTION3_ICON.hasValue()) + builder.addAction(ACTION3_ICON.getValueInt(), ACTION3_TEXT.getValueString(), noop); + + if (STYLE.hasValue()) + generateStyle(builder); + + // for older OSes + builder.setContentIntent(noop); + + return builder.build(); + } + + private static void generateStyle(NotificationCompat.Builder builder) { + Integer styleValue = STYLE.getValueInt(); + + if (STYLE_BIG_PICTURE.equals(styleValue)) { + BigPictureStyle bigPicture = new NotificationCompat.BigPictureStyle(); + if (PICTURE.hasValue()) + bigPicture.bigPicture(PICTURE.getValueBitmap()); + if (BIG_CONTENT_TITLE.hasValue()) + bigPicture.setBigContentTitle(BIG_CONTENT_TITLE.getValueString()); + if (SUMMARY_TEXT.hasValue()) + bigPicture.setSummaryText(SUMMARY_TEXT.getValueString()); + builder.setStyle(bigPicture); + } else if (STYLE_BIG_TEXT.equals(styleValue)) { + BigTextStyle bigText = new NotificationCompat.BigTextStyle(); + if (BIG_TEXT.hasValue()) + bigText.bigText(BIG_TEXT.getValueString()); + if (BIG_CONTENT_TITLE.hasValue()) + bigText.setBigContentTitle(BIG_CONTENT_TITLE.getValueString()); + if (SUMMARY_TEXT.hasValue()) + bigText.setSummaryText(SUMMARY_TEXT.getValueString()); + builder.setStyle(bigText); + } else if (STYLE_INBOX.equals(styleValue)) { + InboxStyle inboxStyle = new NotificationCompat.InboxStyle(); + if (LINES.hasValue()) { + for (String line : LINES.getValueString().split("\\n")) { + inboxStyle.addLine(line); + } + } + if (BIG_CONTENT_TITLE.hasValue()) + inboxStyle.setBigContentTitle(BIG_CONTENT_TITLE.getValueString()); + if (SUMMARY_TEXT.hasValue()) + inboxStyle.setSummaryText(SUMMARY_TEXT.getValueString()); + builder.setStyle(inboxStyle); + } + } + +} |