aboutsummaryrefslogtreecommitdiff
path: root/apps/NotificationStudio/src/com/android/notificationstudio/generator/NotificationGenerator.java
diff options
context:
space:
mode:
Diffstat (limited to 'apps/NotificationStudio/src/com/android/notificationstudio/generator/NotificationGenerator.java')
-rw-r--r--apps/NotificationStudio/src/com/android/notificationstudio/generator/NotificationGenerator.java131
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);
+ }
+ }
+
+}