summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher/ItemInfo.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/launcher/ItemInfo.java')
-rw-r--r--src/com/android/launcher/ItemInfo.java130
1 files changed, 130 insertions, 0 deletions
diff --git a/src/com/android/launcher/ItemInfo.java b/src/com/android/launcher/ItemInfo.java
new file mode 100644
index 000000000..f2ce23d32
--- /dev/null
+++ b/src/com/android/launcher/ItemInfo.java
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2008 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.launcher;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+import android.content.ContentValues;
+import android.graphics.Bitmap;
+import com.android.internal.provider.Settings;
+import android.util.Log;
+
+
+/**
+ * Represents an item in the launcher.
+ */
+class ItemInfo {
+
+ static final int NO_ID = -1;
+
+ /**
+ * The id in the settings database for this item
+ */
+ long id = NO_ID;
+
+ /**
+ * One of {@link Settings.Favorites#ITEM_TYPE_APPLICATION},
+ * {@link Settings.Favorites#ITEM_TYPE_SHORTCUT},
+ * {@link Settings.Favorites#ITEM_TYPE_USER_FOLDER},
+ * {@link Settings.Favorites#ITEM_TYPE_WIDGET_CLOCK},
+ * {@link Settings.Favorites#ITEM_TYPE_WIDGET_SEARCH} or
+ * {@link Settings.Favorites#ITEM_TYPE_WIDGET_PHOTO_FRAME},
+ */
+ int itemType;
+
+ /**
+ * The id of the container that holds this item. For the desktop, this will be
+ * {@link Settings.Favorites#CONTAINER_DESKTOP}. For the all applications folder it
+ * will be {@link #NO_ID} (since it is not stored in the settings DB). For user folders
+ * it will be the id of the folder.
+ */
+ long container = NO_ID;
+
+ /**
+ * Iindicates the screen in which the shortcut appears.
+ */
+ int screen = -1;
+
+ /**
+ * Indicates the X position of the associated cell.
+ */
+ int cellX = -1;
+
+ /**
+ * Indicates the Y position of the associated cell.
+ */
+ int cellY = -1;
+
+ /**
+ * Indicates the X cell span.
+ */
+ int spanX = 1;
+
+ /**
+ * Indicates the Y cell span.
+ */
+ int spanY = 1;
+
+ ItemInfo() {
+ }
+
+ ItemInfo(ItemInfo info) {
+ id = info.id;
+ cellX = info.cellX;
+ cellY = info.cellY;
+ spanX = info.spanX;
+ spanY = info.spanY;
+ screen = info.screen;
+ itemType = info.itemType;
+ container = info.container;
+ }
+
+ /**
+ * Write the fields of this item to the DB
+ *
+ * @param values
+ */
+ void onAddToDatabase(ContentValues values) {
+ values.put(Settings.Favorites.ITEM_TYPE, itemType);
+ values.put(Settings.Favorites.CONTAINER, container);
+ values.put(Settings.Favorites.SCREEN, screen);
+ values.put(Settings.Favorites.CELLX, cellX);
+ values.put(Settings.Favorites.CELLY, cellY);
+ values.put(Settings.Favorites.SPANX, spanX);
+ values.put(Settings.Favorites.SPANY, spanY);
+ }
+
+ static void writeBitmap(ContentValues values, Bitmap bitmap) {
+ if (bitmap != null) {
+ // Try go guesstimate how much space the icon will take when serialized
+ // to avoid unnecessary allocations/copies during the write.
+ int size = bitmap.getWidth() * bitmap.getHeight() * 4;
+ ByteArrayOutputStream out = new ByteArrayOutputStream(size);
+ try {
+ bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
+ out.flush();
+ out.close();
+
+ values.put(Settings.Favorites.ICON, out.toByteArray());
+ } catch (IOException e) {
+ Log.w("Favorite", "Could not write icon");
+ }
+ }
+ }
+
+}