FolderInfo.java revision a9cf38f533d1e86269868f1e6a806ccffd4a78fc
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 19df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohenimport java.util.ArrayList; 20df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen 21df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohenimport android.content.ContentValues; 2231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 2331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project/** 2431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Represents a folder containing shortcuts or apps. 2531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 2631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectclass FolderInfo extends ItemInfo { 27df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen 2831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project /** 2931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Whether this folder has been opened 3031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 3131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project boolean opened; 3231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 3331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project /** 3431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * The folder name. 3531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 3631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project CharSequence title; 37df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen 38df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen /** 39df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen * The apps and shortcuts 40df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen */ 41df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen ArrayList<ShortcutInfo> contents = new ArrayList<ShortcutInfo>(); 42df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen 43a9cf38f533d1e86269868f1e6a806ccffd4a78fcAdam Cohen ArrayList<FolderListener> listeners = new ArrayList<FolderListener>(); 44a9cf38f533d1e86269868f1e6a806ccffd4a78fcAdam Cohen 45df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen FolderInfo() { 46df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen itemType = LauncherSettings.Favorites.ITEM_TYPE_FOLDER; 47df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen } 48df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen 49df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen /** 50df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen * Add an app or shortcut 51df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen * 52df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen * @param item 53df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen */ 54df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen public void add(ShortcutInfo item) { 55df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen contents.add(item); 56a9cf38f533d1e86269868f1e6a806ccffd4a78fcAdam Cohen for (int i = 0; i < listeners.size(); i++) { 57a9cf38f533d1e86269868f1e6a806ccffd4a78fcAdam Cohen listeners.get(i).onAdd(item); 58a9cf38f533d1e86269868f1e6a806ccffd4a78fcAdam Cohen } 59df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen } 60df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen 61df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen /** 62df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen * Remove an app or shortcut. Does not change the DB. 63df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen * 64df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen * @param item 65df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen */ 66df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen public void remove(ShortcutInfo item) { 67df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen contents.remove(item); 68a9cf38f533d1e86269868f1e6a806ccffd4a78fcAdam Cohen for (int i = 0; i < listeners.size(); i++) { 69a9cf38f533d1e86269868f1e6a806ccffd4a78fcAdam Cohen listeners.get(i).onRemove(item); 70a9cf38f533d1e86269868f1e6a806ccffd4a78fcAdam Cohen } 71df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen } 72df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen 73df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen @Override 74df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen void onAddToDatabase(ContentValues values) { 75df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen super.onAddToDatabase(values); 76df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen values.put(LauncherSettings.Favorites.TITLE, title.toString()); 77df2cc41acbfacd576f99483a4af1cda32ebd3d09Adam Cohen } 78a9cf38f533d1e86269868f1e6a806ccffd4a78fcAdam Cohen 79a9cf38f533d1e86269868f1e6a806ccffd4a78fcAdam Cohen void addListener(FolderListener listener) { 80a9cf38f533d1e86269868f1e6a806ccffd4a78fcAdam Cohen listeners.add(listener); 81a9cf38f533d1e86269868f1e6a806ccffd4a78fcAdam Cohen } 82a9cf38f533d1e86269868f1e6a806ccffd4a78fcAdam Cohen 83a9cf38f533d1e86269868f1e6a806ccffd4a78fcAdam Cohen void removeListener(FolderListener listener) { 84a9cf38f533d1e86269868f1e6a806ccffd4a78fcAdam Cohen if (listeners.contains(listener)) { 85a9cf38f533d1e86269868f1e6a806ccffd4a78fcAdam Cohen listeners.remove(listener); 86a9cf38f533d1e86269868f1e6a806ccffd4a78fcAdam Cohen } 87a9cf38f533d1e86269868f1e6a806ccffd4a78fcAdam Cohen } 88a9cf38f533d1e86269868f1e6a806ccffd4a78fcAdam Cohen 89a9cf38f533d1e86269868f1e6a806ccffd4a78fcAdam Cohen interface FolderListener { 90a9cf38f533d1e86269868f1e6a806ccffd4a78fcAdam Cohen public void onAdd(ShortcutInfo item); 91a9cf38f533d1e86269868f1e6a806ccffd4a78fcAdam Cohen public void onRemove(ShortcutInfo item); 92a9cf38f533d1e86269868f1e6a806ccffd4a78fcAdam Cohen } 9331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project} 94