aboutsummaryrefslogtreecommitdiff
path: root/apps/NotificationStudio/src/com/android/notificationstudio/model/EditableItem.java
diff options
context:
space:
mode:
Diffstat (limited to 'apps/NotificationStudio/src/com/android/notificationstudio/model/EditableItem.java')
-rw-r--r--apps/NotificationStudio/src/com/android/notificationstudio/model/EditableItem.java216
1 files changed, 216 insertions, 0 deletions
diff --git a/apps/NotificationStudio/src/com/android/notificationstudio/model/EditableItem.java b/apps/NotificationStudio/src/com/android/notificationstudio/model/EditableItem.java
new file mode 100644
index 000000000..54e03e019
--- /dev/null
+++ b/apps/NotificationStudio/src/com/android/notificationstudio/model/EditableItem.java
@@ -0,0 +1,216 @@
+/*
+ * 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.model;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+
+import com.android.notificationstudio.R;
+
+public enum EditableItem implements EditableItemConstants {
+
+ PRESET(R.string.preset, TYPE_DROP_DOWN, CATEGORY_MAIN,
+ PRESET_BASIC, PRESET_EMAIL, PRESET_PHOTO, PRESET_CUSTOM),
+ SMALL_ICON(R.string.small_icon, TYPE_RESOURCE_ID, CATEGORY_MAIN,
+ SMALL_ICONS),
+ CONTENT_TITLE(R.string.content_title, TYPE_TEXT, CATEGORY_MAIN),
+ CONTENT_TEXT(R.string.content_text, TYPE_TEXT, CATEGORY_MAIN),
+ SUB_TEXT(R.string.sub_text, TYPE_TEXT, CATEGORY_MAIN),
+ LARGE_ICON(R.string.large_icon, TYPE_BITMAP, CATEGORY_MAIN),
+ CONTENT_INFO(R.string.content_info, TYPE_TEXT, CATEGORY_MAIN),
+ NUMBER(R.string.number, TYPE_INT, CATEGORY_MAIN),
+ WHEN(R.string.when, TYPE_DATETIME, CATEGORY_MAIN),
+ PROGRESS(R.string.progress, TYPE_BOOLEAN, CATEGORY_MAIN),
+ USES_CHRON(R.string.uses_chron, TYPE_BOOLEAN, CATEGORY_MAIN),
+ STYLE(R.string.style, TYPE_DROP_DOWN, CATEGORY_STYLE,
+ STYLE_NONE, STYLE_BIG_PICTURE, STYLE_BIG_TEXT, STYLE_INBOX),
+ PICTURE(R.string.picture, TYPE_BITMAP, CATEGORY_STYLE),
+ BIG_TEXT(R.string.big_text, TYPE_TEXT, CATEGORY_STYLE),
+ LINES(R.string.lines, TYPE_TEXT_LINES, CATEGORY_STYLE),
+ BIG_CONTENT_TITLE(R.string.big_content_title, TYPE_TEXT, CATEGORY_STYLE),
+ SUMMARY_TEXT(R.string.summary_text, TYPE_TEXT, CATEGORY_STYLE),
+ ACTION1_ICON(R.string.icon, TYPE_RESOURCE_ID, CATEGORY_ACTION1,
+ ACTION_ICONS),
+ ACTION1_TEXT(R.string.text, TYPE_TEXT, CATEGORY_ACTION1),
+ ACTION2_ICON(R.string.icon, TYPE_RESOURCE_ID, CATEGORY_ACTION2,
+ ACTION_ICONS),
+ ACTION2_TEXT(R.string.text, TYPE_TEXT, CATEGORY_ACTION2),
+ ACTION3_ICON(R.string.icon, TYPE_RESOURCE_ID, CATEGORY_ACTION3,
+ ACTION_ICONS),
+ ACTION3_TEXT(R.string.text, TYPE_TEXT, CATEGORY_ACTION3),
+ ;
+
+ private final int mCaptionId;
+ private final int mType;
+ private final int mCategoryId;
+
+ private Object[] mAvailableValues;
+ private Object mValue;
+ private boolean mVisible = true;
+ private Runnable mVisibilityListener;
+
+ private EditableItem(int captionId, int type, int categoryId, Object... availableValues) {
+ mCaptionId = captionId;
+ mType = type;
+ mCategoryId = categoryId;
+ mAvailableValues = availableValues;
+ }
+
+ // init
+ public static void initIfNecessary(Context context) {
+ if (PRESET.hasValue())
+ return;
+ loadBitmaps(context, LARGE_ICON, LARGE_ICONS);
+ loadBitmaps(context, PICTURE, PICTURES);
+ PRESET.setValue(PRESET_BASIC);
+ }
+
+ private static void loadBitmaps(Context context, EditableItem item, int[] bitmapResIds) {
+ Object[] largeIconBitmaps = new Object[bitmapResIds.length];
+ Resources res = context.getResources();
+ for (int i = 0; i < bitmapResIds.length; i++)
+ largeIconBitmaps[i] = BitmapFactory.decodeResource(res, bitmapResIds[i]);
+ item.setAvailableValues(largeIconBitmaps);
+ }
+
+ // visibility
+ public boolean isVisible() {
+ return mVisible;
+ }
+
+ public void setVisible(boolean visible) {
+ if (mVisible == visible)
+ return;
+ mVisible = visible;
+ if (mVisibilityListener != null)
+ mVisibilityListener.run();
+ }
+
+ public void setVisibilityListener(Runnable listener) {
+ mVisibilityListener = listener;
+ }
+
+ // value
+
+ public boolean hasValue() {
+ return mValue != null;
+ }
+
+ public void setValue(Object value) {
+ if (mValue == value)
+ return;
+ mValue = value;
+ if (this == STYLE)
+ applyStyle();
+ if (this == PRESET && !PRESET_CUSTOM.equals(value))
+ applyPreset();
+ }
+
+ private void applyStyle() {
+ PICTURE.setVisible(STYLE_BIG_PICTURE.equals(mValue));
+ BIG_TEXT.setVisible(STYLE_BIG_TEXT.equals(mValue));
+ LINES.setVisible(STYLE_INBOX.equals(mValue));
+ BIG_CONTENT_TITLE.setVisible(!STYLE_NONE.equals(mValue));
+ SUMMARY_TEXT.setVisible(!STYLE_NONE.equals(mValue));
+ }
+
+ private void applyPreset() {
+ for (EditableItem item : values())
+ if (item != PRESET)
+ item.setValue(null);
+ STYLE.setValue(STYLE_NONE);
+ if (PRESET_BASIC.equals(mValue)) {
+ SMALL_ICON.setValue(android.R.drawable.stat_notify_chat);
+ CONTENT_TITLE.setValue("Basic title");
+ CONTENT_TEXT.setValue("Basic text");
+ } else if (PRESET_EMAIL.equals(mValue)) {
+ SMALL_ICON.setValue(R.drawable.ic_notification_multiple_mail_holo_dark);
+ LARGE_ICON.setValue(LARGE_ICON.getAvailableValues()[3]);
+ CONTENT_TITLE.setValue("3 new messages");
+ CONTENT_TEXT.setValue("Alice, Bob, Chuck");
+ STYLE.setValue(STYLE_INBOX);
+ LINES.setValue("Alice: Re: Something\n" +
+ "Bob: Did you get the memo?\n" +
+ "Chuck: Limited time offer!");
+ } else if (PRESET_PHOTO.equals(mValue)) {
+ SMALL_ICON.setValue(android.R.drawable.ic_menu_camera);
+ LARGE_ICON.setValue(LARGE_ICON.getAvailableValues()[2]);
+ CONTENT_TITLE.setValue("Sunset on the rocks");
+ CONTENT_TEXT.setValue("800x534 | 405.1K");
+ SUMMARY_TEXT.setValue(CONTENT_TEXT.getValueString());
+ STYLE.setValue(STYLE_BIG_PICTURE);
+ PICTURE.setValue(PICTURE.getAvailableValues()[0]);
+ ACTION1_ICON.setValue(android.R.drawable.ic_menu_share);
+ ACTION1_TEXT.setValue("Share");
+ }
+ }
+
+ public Object getValue() {
+ return mValue;
+ }
+
+ public String getValueString() {
+ return (String) mValue;
+ }
+
+ public int getValueInt() {
+ return (Integer) mValue;
+ }
+
+ public long getValueLong() {
+ return (Long) mValue;
+ }
+
+ public boolean getValueBool() {
+ return (Boolean) mValue;
+ }
+
+ public Bitmap getValueBitmap() {
+ return (Bitmap) mValue;
+ }
+
+ // available values
+
+ public Object[] getAvailableValues() {
+ return mAvailableValues;
+ }
+
+ public Integer[] getAvailableValuesInteger() {
+ Integer[] integers = new Integer[mAvailableValues.length];
+ System.arraycopy(mAvailableValues, 0, integers, 0, integers.length);
+ return integers;
+ }
+
+ public <T> void setAvailableValues(T... values) {
+ mAvailableValues = values;
+ }
+
+ public String getCaption(Context context) {
+ return context.getString(mCaptionId);
+ }
+
+ public String getCategory(Context context) {
+ return context.getString(mCategoryId);
+ }
+
+ public int getType() {
+ return mType;
+ }
+
+}