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