diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java index 6dd18d34cd..015f187df0 100644 --- a/src/com/android/launcher2/CellLayout.java +++ b/src/com/android/launcher2/CellLayout.java @@ -27,6 +27,7 @@ import android.view.MotionEvent; import android.view.View; import android.view.ViewDebug; import android.view.ViewGroup; +import android.app.WallpaperManager; import java.util.ArrayList; @@ -52,14 +53,14 @@ public class CellLayout extends ViewGroup { private final CellInfo mCellInfo = new CellInfo(); int[] mCellXY = new int[2]; - boolean[][] mOccupied; private RectF mDragRect = new RectF(); private boolean mDirtyTag; - private boolean mLastDownOnOccupiedCell = false; + + private final WallpaperManager mWallpaperManager; public CellLayout(Context context) { this(context, null); @@ -99,6 +100,8 @@ public class CellLayout extends ViewGroup { mOccupied = new boolean[mLongAxisCells][mShortAxisCells]; } } + + mWallpaperManager = WallpaperManager.getInstance(getContext()); } @Override @@ -433,6 +436,14 @@ public class CellLayout extends ViewGroup { result[1] = vStartPadding + cellY * (mCellHeight + mHeightGap); } + int getCellWidth() { + return mCellWidth; + } + + int getCellHeight() { + return mCellHeight; + } + @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // TODO: currently ignoring padding @@ -528,6 +539,13 @@ public class CellLayout extends ViewGroup { int childLeft = lp.x; int childTop = lp.y; child.layout(childLeft, childTop, childLeft + lp.width, childTop + lp.height); + + if (lp.dropped) { + lp.dropped = false; + + mWallpaperManager.sendWallpaperCommand(getWindowToken(), "android.home.drop", + childLeft + lp.width / 2, childTop + lp.height / 2, 0, null); + } } } } @@ -616,6 +634,7 @@ public class CellLayout extends ViewGroup { lp.cellX = targetXY[0]; lp.cellY = targetXY[1]; lp.isDragging = false; + lp.dropped = true; mDragRect.setEmpty(); child.requestLayout(); invalidate(); @@ -844,6 +863,8 @@ out: for (int i = x; i < x + spanX - 1 && x < xCount; i++) { int y; boolean regenerateId; + + boolean dropped; public LayoutParams(Context c, AttributeSet attrs) { super(c, attrs); diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java index 531e10c123..1574be8248 100644 --- a/src/com/android/launcher2/Launcher.java +++ b/src/com/android/launcher2/Launcher.java @@ -38,11 +38,7 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; -import android.graphics.drawable.TransitionDrawable; import android.os.Bundle; -import android.os.Looper; -import android.os.Message; -import android.os.MessageQueue; import android.os.Parcelable; import android.os.RemoteException; import android.os.ServiceManager; @@ -61,7 +57,6 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; -import android.view.WindowManager; import android.view.View.OnLongClickListener; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; @@ -70,10 +65,8 @@ import android.widget.Toast; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProviderInfo; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.HashMap; -import java.util.LinkedList; import java.io.DataOutputStream; import java.io.FileNotFoundException; import java.io.IOException; @@ -184,19 +177,14 @@ public final class Launcher extends Activity private boolean mRestoring; private boolean mWaitingForResult; - private boolean mLocaleChanged; private boolean mExitingBecauseOfLaunch; - private boolean mHomeDown; - private boolean mBackDown; - private Bundle mSavedInstanceState; private LauncherModel mModel; - private ArrayList mDesktopItems = new ArrayList(); - private static HashMap mFolders = new HashMap(); - private ArrayList mAllAppsList = new ArrayList(); + private ArrayList mDesktopItems = new ArrayList(); + private static HashMap mFolders = new HashMap(); public static long lastStartTime; @@ -263,9 +251,9 @@ public final class Launcher extends Activity final int previousMnc = localeConfiguration.mnc; final int mnc = configuration.mnc; - mLocaleChanged = !locale.equals(previousLocale) || mcc != previousMcc || mnc != previousMnc; + boolean localeChanged = !locale.equals(previousLocale) || mcc != previousMcc || mnc != previousMnc; - if (mLocaleChanged) { + if (localeChanged) { localeConfiguration.locale = locale; localeConfiguration.mcc = mcc; localeConfiguration.mnc = mnc; @@ -1274,23 +1262,13 @@ public final class Launcher extends Activity startActivityForResult(chooser, REQUEST_PICK_WALLPAPER); } - @Override - public void onWindowFocusChanged(boolean hasFocus) { - super.onWindowFocusChanged(hasFocus); - if (!hasFocus) { - mBackDown = mHomeDown = false; - } - } - @Override public boolean dispatchKeyEvent(KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) { switch (event.getKeyCode()) { case KeyEvent.KEYCODE_BACK: - mBackDown = true; return true; case KeyEvent.KEYCODE_HOME: - mHomeDown = true; return true; } } else if (event.getAction() == KeyEvent.ACTION_UP) { @@ -1304,10 +1282,8 @@ public final class Launcher extends Activity closeFolder(); } } - mBackDown = false; return true; case KeyEvent.KEYCODE_HOME: - mHomeDown = false; return true; } } @@ -1881,11 +1857,6 @@ public final class Launcher extends Activity final AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(appWidgetId); item.hostView = mAppWidgetHost.createView(this, appWidgetId, appWidgetInfo); - if (true) { - Log.d(LOG_TAG, String.format("about to setAppWidget for id=%d, info=%s", - appWidgetId, appWidgetInfo)); - } - item.hostView.setAppWidget(appWidgetId, appWidgetInfo); item.hostView.setTag(item); @@ -1945,8 +1916,7 @@ public final class Launcher extends Activity * Implementation of the method from LauncherModel.Callbacks. */ public void bindAllApplications(ArrayList apps) { - mAllAppsList = apps; - mAllAppsGrid.setApps(mAllAppsList); + mAllAppsGrid.setApps(apps); } /** diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java index b917cdd362..e10396123a 100644 --- a/src/com/android/launcher2/LauncherModel.java +++ b/src/com/android/launcher2/LauncherModel.java @@ -29,9 +29,7 @@ import android.content.res.Resources; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; -import android.graphics.drawable.Drawable; import android.net.Uri; -import static android.util.Log.*; import android.util.Log; import android.os.Process; import android.os.SystemClock; @@ -318,18 +316,18 @@ public class LauncherModel extends BroadcastReceiver { if (mAllAppsList.added.size() > 0) { added = mAllAppsList.added; - mAllAppsList.added = new ArrayList(); + mAllAppsList.added = new ArrayList(); } if (mAllAppsList.removed.size() > 0) { removed = mAllAppsList.removed; - mAllAppsList.removed = new ArrayList(); + mAllAppsList.removed = new ArrayList(); for (ApplicationInfo info: removed) { AppInfoCache.remove(info.intent.getComponent()); } } if (mAllAppsList.modified.size() > 0) { modified = mAllAppsList.modified; - mAllAppsList.modified = new ArrayList(); + mAllAppsList.modified = new ArrayList(); } final Callbacks callbacks = mCallbacks != null ? mCallbacks.get() : null; @@ -375,9 +373,9 @@ public class LauncherModel extends BroadcastReceiver { private int mLastAllAppsSeq = 0; private int mAllAppsSeq = 1; - final ArrayList mItems = new ArrayList(); - final ArrayList mAppWidgets = new ArrayList(); - final HashMap folders = new HashMap(); + final ArrayList mItems = new ArrayList(); + final ArrayList mAppWidgets = new ArrayList(); + final HashMap folders = new HashMap(); /** * Call this from the ui thread so the handler is initialized on the correct thread. @@ -462,6 +460,7 @@ public class LauncherModel extends BroadcastReceiver { mWaitThread.join(); done = true; } catch (InterruptedException ex) { + // Ignore } } mWaitThread = null; @@ -519,6 +518,7 @@ public class LauncherModel extends BroadcastReceiver { try { this.wait(); } catch (InterruptedException ex) { + // Ignore } } Log.d(TAG, "done waiting to be done with workspace"); @@ -559,7 +559,6 @@ public class LauncherModel extends BroadcastReceiver { // Setting the reference is atomic, but we can't do it inside the other critical // sections. mLoaderThread = null; - return; } } @@ -942,7 +941,7 @@ public class LauncherModel extends BroadcastReceiver { private void bindAllApps() { synchronized (mLock) { final ArrayList results = mAllAppsList.added; - mAllAppsList.added = new ArrayList(); + mAllAppsList.added = new ArrayList(); mHandler.post(new Runnable() { public void run() { final long t = SystemClock.uptimeMillis(); diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java index 608e7b7cbb..a0391d33e2 100644 --- a/src/com/android/launcher2/Workspace.java +++ b/src/com/android/launcher2/Workspace.java @@ -48,7 +48,7 @@ import java.util.ArrayList; * A workspace is meant to be used with a fixed width only. */ public class Workspace extends ViewGroup implements DropTarget, DragSource, DragScroller { - private static final String TAG = "Launcher.Workspace"; + //private static final String TAG = "Launcher.Workspace"; private static final int INVALID_SCREEN = -1; /** @@ -982,7 +982,7 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag mDragInfo.spanX, mDragInfo.spanY, cell, cellLayout, mTargetCell); cellLayout.onDropChild(cell, mTargetCell); - final ItemInfo info = (ItemInfo)cell.getTag(); + final ItemInfo info = (ItemInfo) cell.getTag(); CellLayout.LayoutParams lp = (CellLayout.LayoutParams) cell.getLayoutParams(); LauncherModel.moveItemInDatabase(mLauncher, info, LauncherSettings.Favorites.CONTAINER_DESKTOP, index, lp.cellX, lp.cellY);