ItemInfo.java revision 9c1289cb3bfb74f86e53ec7ac6dd76bb39666b2d
131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project/* 231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * 431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * you may not use this file except in compliance with the License. 631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * You may obtain a copy of the License at 731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * 831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * 1031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * See the License for the specific language governing permissions and 1431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * limitations under the License. 1531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 1631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 17a5902524d4403885eb4c50360bf3465c6be796efJoe Onoratopackage com.android.launcher2; 1831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 1931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport java.io.ByteArrayOutputStream; 2031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport java.io.IOException; 2131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 2231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.content.ContentValues; 2331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.graphics.Bitmap; 2431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.util.Log; 2531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 2631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project/** 2731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Represents an item in the launcher. 2831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 2931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectclass ItemInfo { 3031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 3131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project static final int NO_ID = -1; 3231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 3331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project /** 3431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * The id in the settings database for this item 3531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 3631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project long id = NO_ID; 3731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 3831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project /** 3931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * One of {@link LauncherSettings.Favorites#ITEM_TYPE_APPLICATION}, 4031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * {@link LauncherSettings.Favorites#ITEM_TYPE_SHORTCUT}, 4131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * {@link LauncherSettings.Favorites#ITEM_TYPE_USER_FOLDER}, or 427376faefbbcbe30cc4e3f706ab95c254a4707d98The Android Open Source Project * {@link LauncherSettings.Favorites#ITEM_TYPE_APPWIDGET}. 4331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 4431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project int itemType; 4531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 4631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project /** 4731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * The id of the container that holds this item. For the desktop, this will be 4831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * {@link LauncherSettings.Favorites#CONTAINER_DESKTOP}. For the all applications folder it 4931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * will be {@link #NO_ID} (since it is not stored in the settings DB). For user folders 5031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * it will be the id of the folder. 5131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 5231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project long container = NO_ID; 5331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 5431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project /** 5531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Iindicates the screen in which the shortcut appears. 5631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 5731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project int screen = -1; 5831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 5931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project /** 6031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Indicates the X position of the associated cell. 6131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 6231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project int cellX = -1; 6331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 6431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project /** 6531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Indicates the Y position of the associated cell. 6631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 6731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project int cellY = -1; 6831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 6931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project /** 7031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Indicates the X cell span. 7131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 7231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project int spanX = 1; 7331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 7431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project /** 7531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Indicates the Y cell span. 7631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 7731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project int spanY = 1; 7831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 7973b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy /** 8073b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy * Indicates whether the item is a gesture. 8173b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy */ 8273b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy boolean isGesture = false; 8373b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy 8431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project ItemInfo() { 8531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 8631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 8731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project ItemInfo(ItemInfo info) { 8831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project id = info.id; 8931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project cellX = info.cellX; 9031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project cellY = info.cellY; 9131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project spanX = info.spanX; 9231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project spanY = info.spanY; 9331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project screen = info.screen; 9431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project itemType = info.itemType; 9531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project container = info.container; 9631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 9731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 9831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project /** 9931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Write the fields of this item to the DB 10031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * 10131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * @param values 10231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 10331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project void onAddToDatabase(ContentValues values) { 10473b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy values.put(LauncherSettings.BaseLauncherColumns.ITEM_TYPE, itemType); 10573b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy if (!isGesture) { 10673b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy values.put(LauncherSettings.Favorites.CONTAINER, container); 10773b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy values.put(LauncherSettings.Favorites.SCREEN, screen); 10873b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy values.put(LauncherSettings.Favorites.CELLX, cellX); 10973b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy values.put(LauncherSettings.Favorites.CELLY, cellY); 11073b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy values.put(LauncherSettings.Favorites.SPANX, spanX); 11173b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy values.put(LauncherSettings.Favorites.SPANY, spanY); 11273b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy } 11331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 11431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 11531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project static void writeBitmap(ContentValues values, Bitmap bitmap) { 11631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project if (bitmap != null) { 11731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project // Try go guesstimate how much space the icon will take when serialized 11831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project // to avoid unnecessary allocations/copies during the write. 11931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project int size = bitmap.getWidth() * bitmap.getHeight() * 4; 12031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project ByteArrayOutputStream out = new ByteArrayOutputStream(size); 12131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project try { 12231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); 12331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project out.flush(); 12431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project out.close(); 12531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 12631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project values.put(LauncherSettings.Favorites.ICON, out.toByteArray()); 12731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } catch (IOException e) { 12831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project Log.w("Favorite", "Could not write icon"); 12931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 13031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 13131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 13231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 1339c1289cb3bfb74f86e53ec7ac6dd76bb39666b2dJoe Onorato void unbind() { 1349c1289cb3bfb74f86e53ec7ac6dd76bb39666b2dJoe Onorato } 13531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project} 136