ItemInfo.java revision 7376faefbbcbe30cc4e3f706ab95c254a4707d98
101f0ed4126be412c8c4352026dad3b2a49832267Michael Jurka/* 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 1731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectpackage com.android.launcher; 18325dc23624160689e59fbac708cf6f222b20d025Daniel Sandler 1931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport java.io.ByteArrayOutputStream; 20974c3864bb438fc924913e0017385f873332d052Michael Jurkaimport java.io.IOException; 21974c3864bb438fc924913e0017385f873332d052Michael Jurka 22dd6c992943a139ce277768b5715e276cfa974f91Gilles Debunneimport android.content.ContentValues; 238edd75c8bb0729a10cb39f614183e3e9ae4288e8Michael Jurkaimport android.graphics.Bitmap; 24dd6c992943a139ce277768b5715e276cfa974f91Gilles Debunneimport android.util.Log; 252801cafe62653131fdc9da402e5c44e5ffd0bf47Adam Cohen 262801cafe62653131fdc9da402e5c44e5ffd0bf47Adam Cohen/** 27dd6c992943a139ce277768b5715e276cfa974f91Gilles Debunne * Represents an item in the launcher. 287044272f180d34ab29866f6c59ee75376e8a1df5Winson Chung */ 29946ad470c72a3caa7568d11836c182b7f84d840dMichael Jurkaclass ItemInfo { 302a9e228e6fd719732639beb880d6df64d48158a1Brett Chabot 31c7450e3ebd7672fcd7b9d51a8c1e68f63c5ce86bWinson Chung static final int NO_ID = -1; 3231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 330cf2a7c3eeb75cbd532b011524140a4b963f2c93Adam Cohen /** 34af44209bfa60da3c7ab49b7f508f9effd316ee41Michael Jurka * The id in the settings database for this item 35af44209bfa60da3c7ab49b7f508f9effd316ee41Michael Jurka */ 3631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project long id = NO_ID; 372ca0ae7d7c4d5f6b24a1b3d987813cad9ee4197fJoe Onorato 38e326f186af6b00e4ea32849f1527254c669d0600Michael Jurka /** 39c9b1877f9acf604897c719d70dc99685d10849b5Daniel Sandler * One of {@link LauncherSettings.Favorites#ITEM_TYPE_APPLICATION}, 401e2efc8a6d355bb6c0fc75261eb819e250ddb8fbJeff Sharkey * {@link LauncherSettings.Favorites#ITEM_TYPE_SHORTCUT}, 4131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * {@link LauncherSettings.Favorites#ITEM_TYPE_USER_FOLDER}, or 4231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * {@link LauncherSettings.Favorites#ITEM_TYPE_APPWIDGET}. 43f0ea4d3378be7b962c8e0bce2392df5e82491fb8Winson Chung */ 4482f5553a137f0a25f7333a6fc9507c847b7a42edWinson Chung int itemType; 45aafa03cbb925c74be1c13f8bb99d928be429e62fWinson Chung 4631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project /** 47716b51e030f9c6ed34af2b947760e46a280c65a6Adam Cohen * The id of the container that holds this item. For the desktop, this will be 4885f418d0f5607c66efef1673075a6d3486e5af83Bjorn Bringert * {@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 50138a04170d964da9cdec228e95b976875ae52481Karl Rosaen * it will be the id of the folder. 511e2efc8a6d355bb6c0fc75261eb819e250ddb8fbJeff Sharkey */ 52268c4751b547e1470a94030af73a4e7bb8ea221eAdam Cohen long container = NO_ID; 53268c4751b547e1470a94030af73a4e7bb8ea221eAdam Cohen 545f8afe6280eae34620067696173e71943e1a30a3Winson Chung /** 55268c4751b547e1470a94030af73a4e7bb8ea221eAdam Cohen * Iindicates the screen in which the shortcut appears. 56af44209bfa60da3c7ab49b7f508f9effd316ee41Michael Jurka */ 57af44209bfa60da3c7ab49b7f508f9effd316ee41Michael Jurka int screen = -1; 58c9b1877f9acf604897c719d70dc99685d10849b5Daniel Sandler 59319226a894f5f0b94ca94e64f976a043e3873a40Brad Fitzpatrick /** 6031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Indicates the X position of the associated cell. 610fbe7bc14edda0e42d700956f5a3fbd72ed44c49Christian Mehlmauer */ 621e2efc8a6d355bb6c0fc75261eb819e250ddb8fbJeff Sharkey int cellX = -1; 63ded9f8d8658d0b6601006c0a954cd3bf530e55c1Adam Cohen 64a2413751e3a698aef9c87411a639637883856939Winson Chung /** 65843e860e8ebab96ff70988f2829fac38afd9d937Daniel Sandler * Indicates the Y position of the associated cell. 664ed6278e518cc6894cb150b606382e8e6a012599Patrick Dubroy */ 676d7fe506fcfbc7bd6810ec8dd48c214e856aa87aAmith Yamasani int cellY = -1; 6831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 6931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project /** 70a33411cb83e2c7f822d6486183a7a4ea7d1b09e6Michael Jurka * Indicates the X cell span. 7131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 72892c74d460ad98c6306420e1127c9aa3e505ba25Winson Chung int spanX = 1; 737c312c15e33b6cffbda707429e88ade498fc9f5eJoe Onorato 7496d30a165185dc59617e181314f4d22634e22952Adam Cohen /** 7596d30a165185dc59617e181314f4d22634e22952Adam Cohen * Indicates the Y cell span. 7696d30a165185dc59617e181314f4d22634e22952Adam Cohen */ 7796d30a165185dc59617e181314f4d22634e22952Adam Cohen int spanY = 1; 7896d30a165185dc59617e181314f4d22634e22952Adam Cohen 7996d30a165185dc59617e181314f4d22634e22952Adam Cohen ItemInfo() { 8096d30a165185dc59617e181314f4d22634e22952Adam Cohen } 8196d30a165185dc59617e181314f4d22634e22952Adam Cohen 8296d30a165185dc59617e181314f4d22634e22952Adam Cohen ItemInfo(ItemInfo info) { 83f358a4bbd6ce5b6ddadfae19e6b9c6872530d627Adam Cohen id = info.id; 840cf2a7c3eeb75cbd532b011524140a4b963f2c93Adam Cohen cellX = info.cellX; 8596d30a165185dc59617e181314f4d22634e22952Adam Cohen cellY = info.cellY; 8696d30a165185dc59617e181314f4d22634e22952Adam Cohen spanX = info.spanX; 872a4b1a809c6bc0af9ae3ad974fe50e2a91569543Michael Jurka spanY = info.spanY; 8896d30a165185dc59617e181314f4d22634e22952Adam Cohen screen = info.screen; 89815ba2d2eabded5ffee53fba668d63ca9173e6fdSvetoslav Ganov itemType = info.itemType; 900d9cbae4dd6603870d1cd26c9a7b547b5eea6b0cCasey Burkhardt container = info.container; 91cff6af81d721415785bddc2efd74e179d2def9daAdam Cohen } 92f16e571330f030e445c4f7f63f55d093337ffd87Adam Cohen 9331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project /** 9496d30a165185dc59617e181314f4d22634e22952Adam Cohen * Write the fields of this item to the DB 9596d30a165185dc59617e181314f4d22634e22952Adam Cohen * 9696d30a165185dc59617e181314f4d22634e22952Adam Cohen * @param values 9796d30a165185dc59617e181314f4d22634e22952Adam Cohen */ 9896d30a165185dc59617e181314f4d22634e22952Adam Cohen void onAddToDatabase(ContentValues values) { 994ed6278e518cc6894cb150b606382e8e6a012599Patrick Dubroy values.put(LauncherSettings.Favorites.ITEM_TYPE, itemType); 100325dc23624160689e59fbac708cf6f222b20d025Daniel Sandler values.put(LauncherSettings.Favorites.CONTAINER, container); 101edcce099c98a6c40d10109ac092ab50f9d2668f3Romain Guy values.put(LauncherSettings.Favorites.SCREEN, screen); 102c0dcf597084d00e4c23a7fea5fd0738f6c095a6bAdam Cohen values.put(LauncherSettings.Favorites.CELLX, cellX); 103c0dcf597084d00e4c23a7fea5fd0738f6c095a6bAdam Cohen values.put(LauncherSettings.Favorites.CELLY, cellY); 1044caf298a2c9d861d69f5a47b747ada911b125b6dAdam Cohen values.put(LauncherSettings.Favorites.SPANX, spanX); 10516d7ffc5d55cc69ddd5a7854f138b2d8cc0a7635Adam Cohen values.put(LauncherSettings.Favorites.SPANY, spanY); 106c0dcf597084d00e4c23a7fea5fd0738f6c095a6bAdam Cohen } 1074caf298a2c9d861d69f5a47b747ada911b125b6dAdam Cohen 108c0dcf597084d00e4c23a7fea5fd0738f6c095a6bAdam Cohen static void writeBitmap(ContentValues values, Bitmap bitmap) { 10916d7ffc5d55cc69ddd5a7854f138b2d8cc0a7635Adam Cohen if (bitmap != null) { 1104caf298a2c9d861d69f5a47b747ada911b125b6dAdam Cohen // Try go guesstimate how much space the icon will take when serialized 111c0dcf597084d00e4c23a7fea5fd0738f6c095a6bAdam Cohen // to avoid unnecessary allocations/copies during the write. 112f0c6ae0e35d3e020db55b5b826955da66b14b7f6Winson Chung int size = bitmap.getWidth() * bitmap.getHeight() * 4; 1134caf298a2c9d861d69f5a47b747ada911b125b6dAdam Cohen ByteArrayOutputStream out = new ByteArrayOutputStream(size); 114c0dcf597084d00e4c23a7fea5fd0738f6c095a6bAdam Cohen try { 115d7c28056d3fc462f42b508026154d6d8fee5606bMichael Jurka bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); 116c0dcf597084d00e4c23a7fea5fd0738f6c095a6bAdam Cohen out.flush(); 11731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project out.close(); 11831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 11931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project values.put(LauncherSettings.Favorites.ICON, out.toByteArray()); 120c459e5241ea0c53dd53c16e73fd7a187701f537bBjorn Bringert } catch (IOException e) { 1210e26059548e429e5d1c973bebe4c561bead2926fMichael Jurka Log.w("Favorite", "Could not write icon"); 122cd81073eac537e9f85eeee14588d513ea8a56e17Winson Chung } 123a30ce8e6b25e41f392a41fd4d0d3e0a424a84dadJoe Onorato } 124cc67f476c01ee6a7d593fa67f80392c6793432d7Joe Onorato } 12531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 126f061f82461b8afe0c62eecb776e807c14bc0a4aaDaniel Sandler} 127843e860e8ebab96ff70988f2829fac38afd9d937Daniel Sandler