/* * 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); } } }