• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2008 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.launcher3;
18 
19 import android.content.ContentValues;
20 import android.content.Context;
21 
22 import com.android.launcher3.compat.UserHandleCompat;
23 
24 import java.util.ArrayList;
25 import java.util.Arrays;
26 
27 /**
28  * Represents a folder containing shortcuts or apps.
29  */
30 public class FolderInfo extends ItemInfo {
31 
32     /**
33      * Whether this folder has been opened
34      */
35     boolean opened;
36 
37     /**
38      * The apps and shortcuts
39      */
40     ArrayList<ShortcutInfo> contents = new ArrayList<ShortcutInfo>();
41 
42     ArrayList<FolderListener> listeners = new ArrayList<FolderListener>();
43 
FolderInfo()44     FolderInfo() {
45         itemType = LauncherSettings.Favorites.ITEM_TYPE_FOLDER;
46         user = UserHandleCompat.myUserHandle();
47     }
48 
49     /**
50      * Add an app or shortcut
51      *
52      * @param item
53      */
add(ShortcutInfo item)54     public void add(ShortcutInfo item) {
55         contents.add(item);
56         for (int i = 0; i < listeners.size(); i++) {
57             listeners.get(i).onAdd(item);
58         }
59         itemsChanged();
60     }
61 
62     /**
63      * Remove an app or shortcut. Does not change the DB.
64      *
65      * @param item
66      */
remove(ShortcutInfo item)67     public void remove(ShortcutInfo item) {
68         contents.remove(item);
69         for (int i = 0; i < listeners.size(); i++) {
70             listeners.get(i).onRemove(item);
71         }
72         itemsChanged();
73     }
74 
setTitle(CharSequence title)75     public void setTitle(CharSequence title) {
76         this.title = title;
77         for (int i = 0; i < listeners.size(); i++) {
78             listeners.get(i).onTitleChanged(title);
79         }
80     }
81 
82     @Override
onAddToDatabase(Context context, ContentValues values)83     void onAddToDatabase(Context context, ContentValues values) {
84         super.onAddToDatabase(context, values);
85         values.put(LauncherSettings.Favorites.TITLE, title.toString());
86     }
87 
addListener(FolderListener listener)88     void addListener(FolderListener listener) {
89         listeners.add(listener);
90     }
91 
removeListener(FolderListener listener)92     void removeListener(FolderListener listener) {
93         if (listeners.contains(listener)) {
94             listeners.remove(listener);
95         }
96     }
97 
itemsChanged()98     void itemsChanged() {
99         for (int i = 0; i < listeners.size(); i++) {
100             listeners.get(i).onItemsChanged();
101         }
102     }
103 
104     @Override
unbind()105     void unbind() {
106         super.unbind();
107         listeners.clear();
108     }
109 
110     interface FolderListener {
onAdd(ShortcutInfo item)111         public void onAdd(ShortcutInfo item);
onRemove(ShortcutInfo item)112         public void onRemove(ShortcutInfo item);
onTitleChanged(CharSequence title)113         public void onTitleChanged(CharSequence title);
onItemsChanged()114         public void onItemsChanged();
115     }
116 
117     @Override
toString()118     public String toString() {
119         return "FolderInfo(id=" + this.id + " type=" + this.itemType
120                 + " container=" + this.container + " screen=" + screenId
121                 + " cellX=" + cellX + " cellY=" + cellY + " spanX=" + spanX
122                 + " spanY=" + spanY + " dropPos=" + Arrays.toString(dropPos) + ")";
123     }
124 }
125