summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Cohen <adamcohen@google.com>2013-06-14 17:42:35 -0700
committerAdam Cohen <adamcohen@google.com>2013-06-14 17:43:44 -0700
commit7c4c5108295db764ba091cc0ffd7af335a166449 (patch)
tree2b0d67bad56adba11cf6277c59247e4d54bac63c
parenta0b5749433c66b6fed5c6026414ef438a938089b (diff)
downloadandroid_packages_apps_Trebuchet-7c4c5108295db764ba091cc0ffd7af335a166449.tar.gz
android_packages_apps_Trebuchet-7c4c5108295db764ba091cc0ffd7af335a166449.tar.bz2
android_packages_apps_Trebuchet-7c4c5108295db764ba091cc0ffd7af335a166449.zip
HACK: Fixing major persistence regression associated with extra screen to the left
-> Also adding ability to delete shortcuts. Change-Id: I263baf813eae9089f11288494d575a99f0e859c3
-rw-r--r--src/com/android/launcher3/DeleteDropTarget.java21
-rw-r--r--src/com/android/launcher3/DragController.java6
-rw-r--r--src/com/android/launcher3/Launcher.java8
-rw-r--r--src/com/android/launcher3/Workspace.java20
4 files changed, 35 insertions, 20 deletions
diff --git a/src/com/android/launcher3/DeleteDropTarget.java b/src/com/android/launcher3/DeleteDropTarget.java
index a1090dc54..0ccdae1a7 100644
--- a/src/com/android/launcher3/DeleteDropTarget.java
+++ b/src/com/android/launcher3/DeleteDropTarget.java
@@ -128,13 +128,18 @@ public class DeleteDropTarget extends ButtonDropTarget {
@Override
public boolean acceptDrop(DragObject d) {
- // We can remove everything including App shortcuts, folders, widgets, etc.
- if ((d.dragInfo instanceof LauncherAppWidgetInfo) ||
- (d.dragInfo instanceof PendingAddWidgetInfo)) {
- return true;
- } else {
- return false;
+ return willAcceptDrop(d.dragInfo);
+ }
+
+ public static boolean willAcceptDrop(Object info) {
+ if (info instanceof ItemInfo) {
+ ItemInfo item = (ItemInfo) info;
+ if (item.itemType == LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET ||
+ item.itemType == LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT) {
+ return true;
+ }
}
+ return false;
}
@Override
@@ -149,9 +154,7 @@ public class DeleteDropTarget extends ButtonDropTarget {
// If we are dragging an application from AppsCustomize, only show the control if we can
// delete the app (it was downloaded), and rename the string to "uninstall" in such a case
-
- if ((info instanceof LauncherAppWidgetInfo) ||
- (info instanceof PendingAddWidgetInfo)) {
+ if (willAcceptDrop(info)) {
isVisible = true;
} else {
isVisible = false;
diff --git a/src/com/android/launcher3/DragController.java b/src/com/android/launcher3/DragController.java
index e0de5b459..54f7dbc15 100644
--- a/src/com/android/launcher3/DragController.java
+++ b/src/com/android/launcher3/DragController.java
@@ -444,6 +444,9 @@ public class DragController {
mLastTouchUpTime = System.currentTimeMillis();
if (mDragging) {
PointF vec = isFlingingToDelete(mDragObject.dragSource);
+ if (!DeleteDropTarget.willAcceptDrop(mDragObject.dragInfo)) {
+ vec = null;
+ }
if (vec != null) {
dropOnFlingToDeleteTarget(dragLayerX, dragLayerY, vec);
} else {
@@ -597,8 +600,7 @@ public class DragController {
if (mDragging) {
PointF vec = isFlingingToDelete(mDragObject.dragSource);
- if (!(mDragObject.dragInfo instanceof LauncherAppWidgetInfo) &&
- !(mDragObject.dragInfo instanceof PendingAddWidgetInfo)) {
+ if (!DeleteDropTarget.willAcceptDrop(mDragObject.dragInfo)) {
vec = null;
}
if (vec != null) {
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 2634e21de..7f3c4823c 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -840,7 +840,7 @@ public class Launcher extends Activity
mWorkspace.addView(customScreen, 0);
// Ensure that the current page and default page are maintained.
- mWorkspace.incrementDefaultScreen();
+ mWorkspace.incrementNumScreensToLeft();
mWorkspace.setCurrentPage(mWorkspace.getCurrentPage() + 1);
}
@@ -1162,7 +1162,8 @@ public class Launcher extends Activity
return;
}
- LauncherModel.addItemToDatabase(this, info, container, screen, cellXY[0], cellXY[1], false);
+ int adjustedScreen = screen - getWorkspace().mNumPagesToLeft;
+ LauncherModel.addItemToDatabase(this, info, container, adjustedScreen, cellXY[0], cellXY[1], false);
if (!mRestoring) {
mWorkspace.addInScreen(view, container, screen, cellXY[0], cellXY[1], 1, 1,
@@ -1262,8 +1263,9 @@ public class Launcher extends Activity
launcherInfo.minSpanX = mPendingAddInfo.minSpanX;
launcherInfo.minSpanY = mPendingAddInfo.minSpanY;
+ int adjustedScreen = screen - getWorkspace().mNumPagesToLeft;
LauncherModel.addItemToDatabase(this, launcherInfo,
- container, screen, cellXY[0], cellXY[1], false);
+ container, adjustedScreen, cellXY[0], cellXY[1], false);
if (!mRestoring) {
if (hostView == null) {
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index 41f0242c2..9a75cc1d5 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -105,6 +105,7 @@ public class Workspace extends SmoothPagedView
private IBinder mWindowToken;
private static final float WALLPAPER_SCREENS_SPAN = 2f;
+ public int mNumPagesToLeft = 0;
private int mDefaultPage;
/**
@@ -403,8 +404,9 @@ public class Workspace extends SmoothPagedView
// Just a hack so that if a custom content screen is added to the left, we adjust the
// default screen accordingly so that it stays the same.
- void incrementDefaultScreen() {
+ void incrementNumScreensToLeft() {
mDefaultPage++;
+ mNumPagesToLeft++;
}
/**
@@ -1963,7 +1965,9 @@ public class Workspace extends SmoothPagedView
final int[] cellXY = new int[2];
target.findCellForSpanThatIntersects(cellXY, 1, 1, intersectX, intersectY);
addInScreen(view, container, screen, cellXY[0], cellXY[1], 1, 1, insertAtFirst);
- LauncherModel.addOrMoveItemInDatabase(mLauncher, info, container, screen, cellXY[0],
+
+ int adjustedScreen = screen - mNumPagesToLeft;
+ LauncherModel.addOrMoveItemInDatabase(mLauncher, info, container, adjustedScreen, cellXY[0],
cellXY[1]);
}
@@ -2315,7 +2319,10 @@ public class Workspace extends SmoothPagedView
}
}
- LauncherModel.moveItemInDatabase(mLauncher, info, container, screen, lp.cellX,
+ //TODO: This is a hack on top of a hack, but items aren't being saved
+ // to the correct screen due to the extra screen.
+ int adjustedScreen = screen - mNumPagesToLeft;
+ LauncherModel.moveItemInDatabase(mLauncher, info, container, adjustedScreen, lp.cellX,
lp.cellY);
} else {
// If we can't find a drop location, we return the item to its original position
@@ -3176,8 +3183,8 @@ public class Workspace extends SmoothPagedView
CellLayout.LayoutParams lp = (CellLayout.LayoutParams) view.getLayoutParams();
cellLayout.getShortcutsAndWidgets().measureChild(view);
-
- LauncherModel.addOrMoveItemInDatabase(mLauncher, info, container, screen,
+ int adjustedScreen = screen - mNumPagesToLeft;
+ LauncherModel.addOrMoveItemInDatabase(mLauncher, info, container, adjustedScreen,
lp.cellX, lp.cellY);
if (d.dragView != null) {
@@ -3424,7 +3431,8 @@ public class Workspace extends SmoothPagedView
// Null check required as the AllApps button doesn't have an item info
if (info != null && info.requiresDbUpdate) {
info.requiresDbUpdate = false;
- LauncherModel.modifyItemInDatabase(mLauncher, info, container, screen, info.cellX,
+ int adjustedScreen = screen - mNumPagesToLeft;
+ LauncherModel.modifyItemInDatabase(mLauncher, info, container, adjustedScreen, info.cellX,
info.cellY, info.spanX, info.spanY);
}
}