1 package com.android.launcher;
3 import android.content.Context;
4 import android.util.AttributeSet;
5 import android.view.LayoutInflater;
6 import android.view.View;
7 import android.widget.ArrayAdapter;
10 * Folder which contains applications or shortcuts chosen by the user.
13 public class UserFolder extends Folder implements DropTarget {
14 public UserFolder(Context context, AttributeSet attrs) {
15 super(context, attrs);
19 * Creates a new UserFolder, inflated from R.layout.user_folder.
21 * @param context The application's context.
23 * @return A new UserFolder.
25 static UserFolder fromXml(Context context) {
26 return (UserFolder) LayoutInflater.from(context).inflate(R.layout.user_folder, null);
29 public boolean acceptDrop(DragSource source, int x, int y, int xOffset, int yOffset,
31 final ItemInfo item = (ItemInfo) dragInfo;
32 final int itemType = item.itemType;
33 return (itemType == LauncherSettings.Favorites.ITEM_TYPE_APPLICATION ||
34 itemType == LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT) && item.container != mInfo.id;
37 public void onDrop(DragSource source, int x, int y, int xOffset, int yOffset, Object dragInfo) {
38 final ApplicationInfo item = (ApplicationInfo) dragInfo;
39 //noinspection unchecked
40 ((ArrayAdapter<ApplicationInfo>) mContent.getAdapter()).add((ApplicationInfo) dragInfo);
41 LauncherModel.addOrMoveItemInDatabase(mLauncher, item, mInfo.id, 0, 0, 0);
44 public void onDragEnter(DragSource source, int x, int y, int xOffset, int yOffset, Object dragInfo) {
47 public void onDragOver(DragSource source, int x, int y, int xOffset, int yOffset, Object dragInfo) {
50 public void onDragExit(DragSource source, int x, int y, int xOffset, int yOffset, Object dragInfo) {
54 public void onDropCompleted(View target, boolean success) {
56 //noinspection unchecked
57 ArrayAdapter<ApplicationInfo> adapter =
58 (ArrayAdapter<ApplicationInfo>) mContent.getAdapter();
59 adapter.remove(mDragItem);
63 void bind(FolderInfo info) {
65 setContentAdapter(new ApplicationsAdapter(mContext, ((UserFolderInfo) info).contents));
68 // When the folder opens, we need to refresh the GridView's selection by