// Path: app/src/main/java/com/phonemetra/turbo/launcher/DropTarget.java
// class DragObject {
// 	public int x = -1;
// 	public int y = -1;
// 
// 	/** X offset from the upper-left corner of the cell to where we touched. */
// 	public int xOffset = -1;
// 
// 	/** Y offset from the upper-left corner of the cell to where we touched. */
// 	public int yOffset = -1;
// 
// 	/**
// 	 * This indicates whether a drag is in final stages, either drop or
// 	 * cancel. It differentiates onDragExit, since this is called when the
// 	 * drag is ending, above the current drag target, or when the drag moves
// 	 * off the current drag object.
// 	 */
// 	public boolean dragComplete = false;
// 
// 	/** The view that moves around while you drag. */
// 	public DragView dragView = null;
// 
// 	/** The data associated with the object being dragged */
// 	public Object dragInfo = null;
// 
// 	/** Where the drag originated */
// 	public DragSource dragSource = null;
// 
// 	/** Post drag animation runnable */
// 	public Runnable postAnimationRunnable = null;
// 
// 	/** Indicates that the drag operation was cancelled */
// 	public boolean cancelled = false;
// 
// 	/**
// 	 * Defers removing the DragView from the DragLayer until after the drop
// 	 * animation.
// 	 */
// 	public boolean deferDragViewCleanupPostAnimation = true;
// 
// 	public DragObject() {
// 	}
// }


import android.view.View;
import com.phonemetra.turbo.launcher.DropTarget.DragObject;
/*
 * Copyright (C) 2008 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.phonemetra.turbo.launcher;



/**
 * Interface defining an object that can originate a drag.
 *
 */
public interface DragSource {
    /**
     * @return whether items dragged from this source supports
     */
    boolean supportsFlingToDelete();

    /**
     * @return whether items dragged from this source supports 'App Info'
     */
    boolean supportsAppInfoDropTarget();

    /**
     * @return whether items dragged from this source supports 'Delete' drop target (e.g. to remove
     * a shortcut.
     */
    boolean supportsDeleteDropTarget();

    /*
     * @return the scale of the icons over the workspace icon size
     */
    float getIntrinsicIconScaleFactor();

    /**
     * A callback specifically made back to the source after an item from this source has been flung
     * to be deleted on a DropTarget.  In such a situation, this method will be called after
     * onDropCompleted, and more importantly, after the fling animation has completed.
     */
    void onFlingToDeleteCompleted();

    /**
     * A callback made back to the source after an item from this source has been dropped on a
     * DropTarget.
     */
// Path: app/src/main/java/com/phonemetra/turbo/launcher/DropTarget.java
// class DragObject {
// 	public int x = -1;
// 	public int y = -1;
// 
// 	/** X offset from the upper-left corner of the cell to where we touched. */
// 	public int xOffset = -1;
// 
// 	/** Y offset from the upper-left corner of the cell to where we touched. */
// 	public int yOffset = -1;
// 
// 	/**
// 	 * This indicates whether a drag is in final stages, either drop or
// 	 * cancel. It differentiates onDragExit, since this is called when the
// 	 * drag is ending, above the current drag target, or when the drag moves
// 	 * off the current drag object.
// 	 */
// 	public boolean dragComplete = false;
// 
// 	/** The view that moves around while you drag. */
// 	public DragView dragView = null;
// 
// 	/** The data associated with the object being dragged */
// 	public Object dragInfo = null;
// 
// 	/** Where the drag originated */
// 	public DragSource dragSource = null;
// 
// 	/** Post drag animation runnable */
// 	public Runnable postAnimationRunnable = null;
// 
// 	/** Indicates that the drag operation was cancelled */
// 	public boolean cancelled = false;
// 
// 	/**
// 	 * Defers removing the DragView from the DragLayer until after the drop
// 	 * animation.
// 	 */
// 	public boolean deferDragViewCleanupPostAnimation = true;
// 
// 	public DragObject() {
// 	}
// }


// Path: app/src/main/java/com/phonemetra/turbo/launcher/DragSource.java
import android.view.View;
import com.phonemetra.turbo.launcher.DropTarget.DragObject;

/*
 * Copyright (C) 2008 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.phonemetra.turbo.launcher;



/**
 * Interface defining an object that can originate a drag.
 *
 */
public interface DragSource {
    /**
     * @return whether items dragged from this source supports
     */
    boolean supportsFlingToDelete();

    /**
     * @return whether items dragged from this source supports 'App Info'
     */
    boolean supportsAppInfoDropTarget();

    /**
     * @return whether items dragged from this source supports 'Delete' drop target (e.g. to remove
     * a shortcut.
     */
    boolean supportsDeleteDropTarget();

    /*
     * @return the scale of the icons over the workspace icon size
     */
    float getIntrinsicIconScaleFactor();

    /**
     * A callback specifically made back to the source after an item from this source has been flung
     * to be deleted on a DropTarget.  In such a situation, this method will be called after
     * onDropCompleted, and more importantly, after the fling animation has completed.
     */
    void onFlingToDeleteCompleted();

    /**
     * A callback made back to the source after an item from this source has been dropped on a
     * DropTarget.
     */
    void onDropCompleted(View target, DragObject d, boolean isFlingToDelete, boolean success);