summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/values/config.xml1
-rw-r--r--res/values/strings.xml2
-rw-r--r--src/com/android/launcher3/LauncherAccessibilityDelegate.java32
3 files changed, 35 insertions, 0 deletions
diff --git a/res/values/config.xml b/res/values/config.xml
index 7ce40594f..21e1d6987 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -99,4 +99,5 @@
<item type="id" name="action_info" />
<item type="id" name="action_add_to_workspace" />
<item type="id" name="action_move" />
+ <item type="id" name="action_move_to_workspace" />
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index a5a681a4f..57f23ae98 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -241,4 +241,6 @@
<!-- Accessibility confirmation for folder created [DO NOT TRANSLATE] -->
<string name="folder_created">Folder created</string>
+ <!-- Accessibility action to move an item from folder to workspace. [CHAR_LIMIT=30] [DO NOT TRANSLATE] -->
+ <string name="action_move_to_workspace">Move to home screen</string>
</resources>
diff --git a/src/com/android/launcher3/LauncherAccessibilityDelegate.java b/src/com/android/launcher3/LauncherAccessibilityDelegate.java
index a527db423..8a9a0508c 100644
--- a/src/com/android/launcher3/LauncherAccessibilityDelegate.java
+++ b/src/com/android/launcher3/LauncherAccessibilityDelegate.java
@@ -4,6 +4,7 @@ import android.annotation.TargetApi;
import android.graphics.Rect;
import android.os.Build;
import android.os.Bundle;
+import android.os.Handler;
import android.text.TextUtils;
import android.util.Log;
import android.util.SparseArray;
@@ -26,6 +27,7 @@ public class LauncherAccessibilityDelegate extends AccessibilityDelegate {
private static final int UNINSTALL = R.id.action_uninstall;
private static final int ADD_TO_WORKSPACE = R.id.action_add_to_workspace;
private static final int MOVE = R.id.action_move;
+ private static final int MOVE_TO_WORKSPACE = R.id.action_move_to_workspace;
public enum DragType {
ICON,
@@ -58,6 +60,8 @@ public class LauncherAccessibilityDelegate extends AccessibilityDelegate {
launcher.getText(R.string.action_add_to_workspace)));
mActions.put(MOVE, new AccessibilityAction(MOVE,
launcher.getText(R.string.action_move)));
+ mActions.put(MOVE_TO_WORKSPACE, new AccessibilityAction(MOVE_TO_WORKSPACE,
+ launcher.getText(R.string.action_move_to_workspace)));
}
@Override
@@ -80,6 +84,10 @@ public class LauncherAccessibilityDelegate extends AccessibilityDelegate {
|| (item instanceof LauncherAppWidgetInfo)
|| (item instanceof FolderInfo)) {
info.addAction(mActions.get(MOVE));
+
+ if (item.container >= 0) {
+ info.addAction(mActions.get(MOVE_TO_WORKSPACE));
+ }
} if ((item instanceof AppInfo) || (item instanceof PendingAddItemInfo)) {
info.addAction(mActions.get(ADD_TO_WORKSPACE));
}
@@ -135,6 +143,30 @@ public class LauncherAccessibilityDelegate extends AccessibilityDelegate {
}
});
return true;
+ } else if (action == MOVE_TO_WORKSPACE) {
+ Folder folder = mLauncher.getWorkspace().getOpenFolder();
+ mLauncher.closeFolder(folder);
+ ShortcutInfo info = (ShortcutInfo) item;
+ folder.getInfo().remove(info);
+
+ final int[] coordinates = new int[2];
+ final long screenId = findSpaceOnWorkspace(item, coordinates);
+ LauncherModel.moveItemInDatabase(mLauncher, info,
+ LauncherSettings.Favorites.CONTAINER_DESKTOP,
+ screenId, coordinates[0], coordinates[1]);
+
+ // Bind the item in next frame so that if a new workspace page was created,
+ // it will get laid out.
+ new Handler().post(new Runnable() {
+
+ @Override
+ public void run() {
+ ArrayList<ItemInfo> itemList = new ArrayList<>();
+ itemList.add(item);
+ mLauncher.bindItems(itemList, 0, itemList.size(), true);
+ announceConfirmation(R.string.item_moved);
+ }
+ });
}
return false;
}