blob: 6cdfed95072b411ecd13a7895467bcab64fa5188 [file] [log] [blame]
package com.android.launcher;
import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ArrayAdapter;
/**
* Folder which contains applications or shortcuts chosen by the user.
*
*/
public class UserFolder extends Folder implements DropTarget {
public UserFolder(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* Creates a new UserFolder, inflated from R.layout.user_folder.
*
* @param context The application's context.
*
* @return A new UserFolder.
*/
static UserFolder fromXml(Context context) {
return (UserFolder) LayoutInflater.from(context).inflate(R.layout.user_folder, null);
}
public boolean acceptDrop(DragSource source, int x, int y, int xOffset, int yOffset,
Object dragInfo) {
final ItemInfo item = (ItemInfo) dragInfo;
final int itemType = item.itemType;
return (itemType == LauncherSettings.Favorites.ITEM_TYPE_APPLICATION ||
itemType == LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT) && item.container != mInfo.id;
}
public Rect estimateDropLocation(DragSource source, int x, int y, int xOffset, int yOffset, Object dragInfo, Rect recycle) {
return null;
}
public void onDrop(DragSource source, int x, int y, int xOffset, int yOffset, Object dragInfo) {
final ApplicationInfo item = (ApplicationInfo) dragInfo;
//noinspection unchecked
((ArrayAdapter<ApplicationInfo>) mContent.getAdapter()).add((ApplicationInfo) dragInfo);
LauncherModel.addOrMoveItemInDatabase(mLauncher, item, mInfo.id, 0, 0, 0);
}
public void onDragEnter(DragSource source, int x, int y, int xOffset, int yOffset, Object dragInfo) {
}
public void onDragOver(DragSource source, int x, int y, int xOffset, int yOffset, Object dragInfo) {
}
public void onDragExit(DragSource source, int x, int y, int xOffset, int yOffset, Object dragInfo) {
}
@Override
public void onDropCompleted(View target, boolean success) {
if (success) {
//noinspection unchecked
ArrayAdapter<ApplicationInfo> adapter =
(ArrayAdapter<ApplicationInfo>) mContent.getAdapter();
adapter.remove(mDragItem);
}
}
void bind(FolderInfo info) {
super.bind(info);
setContentAdapter(new ApplicationsAdapter(mContext, ((UserFolderInfo) info).contents));
}
// When the folder opens, we need to refresh the GridView's selection by
// forcing a layout
@Override
void onOpen() {
super.onOpen();
requestFocus();
}
}