2009-03-03 19:32:27 -08:00
|
|
|
package com.android.launcher;
|
|
|
|
|
|
|
|
|
|
import android.content.Context;
|
2009-04-07 21:08:40 -07:00
|
|
|
import android.graphics.Rect;
|
2009-03-03 19:32:27 -08:00
|
|
|
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;
|
|
|
|
|
}
|
2009-04-07 21:08:40 -07:00
|
|
|
|
|
|
|
|
public Rect estimateDropLocation(DragSource source, int x, int y, int xOffset, int yOffset, Object dragInfo, Rect recycle) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
2009-03-03 19:32:27 -08:00
|
|
|
|
|
|
|
|
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();
|
|
|
|
|
}
|
|
|
|
|
}
|