Add gestures to Home.
Press the Home key while in Home to enable the gestures pad.
diff --git a/src/com/android/launcher/LauncherModel.java b/src/com/android/launcher/LauncherModel.java
index 19f6e9b..271f9f4 100644
--- a/src/com/android/launcher/LauncherModel.java
+++ b/src/com/android/launcher/LauncherModel.java
@@ -560,7 +560,7 @@
}
}
- private static class ApplicationInfoComparator implements Comparator<ApplicationInfo> {
+ static class ApplicationInfoComparator implements Comparator<ApplicationInfo> {
public final int compare(ApplicationInfo a, ApplicationInfo b) {
return sCollator.compare(a.title.toString(), b.title.toString());
}
@@ -614,11 +614,11 @@
private static void updateShortcutLabels(ContentResolver resolver, PackageManager manager) {
final Cursor c = resolver.query(LauncherSettings.Favorites.CONTENT_URI,
- new String[] { LauncherSettings.Favorites.ID, LauncherSettings.Favorites.TITLE,
+ new String[] { LauncherSettings.Favorites._ID, LauncherSettings.Favorites.TITLE,
LauncherSettings.Favorites.INTENT, LauncherSettings.Favorites.ITEM_TYPE },
null, null, null);
- final int idIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.ID);
+ final int idIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites._ID);
final int intentIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.INTENT);
final int itemTypeIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.ITEM_TYPE);
final int titleIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.TITLE);
@@ -725,7 +725,7 @@
LauncherSettings.Favorites.CONTENT_URI, null, null, null, null);
try {
- final int idIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.ID);
+ final int idIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites._ID);
final int intentIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.INTENT);
final int titleIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.TITLE);
final int iconTypeIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.ICON_TYPE);
@@ -1143,7 +1143,7 @@
/**
* Make an ApplicationInfo object for a sortcut
*/
- private ApplicationInfo getApplicationInfoShortcut(Cursor c, Launcher launcher,
+ private ApplicationInfo getApplicationInfoShortcut(Cursor c, Context context,
int iconTypeIndex, int iconPackageIndex, int iconResourceIndex, int iconIndex) {
final ApplicationInfo info = new ApplicationInfo();
@@ -1154,11 +1154,11 @@
case LauncherSettings.Favorites.ICON_TYPE_RESOURCE:
String packageName = c.getString(iconPackageIndex);
String resourceName = c.getString(iconResourceIndex);
- PackageManager packageManager = launcher.getPackageManager();
+ PackageManager packageManager = context.getPackageManager();
try {
Resources resources = packageManager.getResourcesForApplication(packageName);
final int id = resources.getIdentifier(resourceName, null, null);
- info.icon = Utilities.createIconThumbnail(resources.getDrawable(id), launcher);
+ info.icon = Utilities.createIconThumbnail(resources.getDrawable(id), context);
} catch (Exception e) {
info.icon = packageManager.getDefaultActivityIcon();
}
@@ -1172,16 +1172,16 @@
try {
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
info.icon = new FastBitmapDrawable(
- Utilities.createBitmapThumbnail(bitmap, launcher));
+ Utilities.createBitmapThumbnail(bitmap, context));
} catch (Exception e) {
- packageManager = launcher.getPackageManager();
+ packageManager = context.getPackageManager();
info.icon = packageManager.getDefaultActivityIcon();
}
info.filtered = true;
info.customIcon = true;
break;
default:
- info.icon = launcher.getPackageManager().getDefaultActivityIcon();
+ info.icon = context.getPackageManager().getDefaultActivityIcon();
info.customIcon = false;
break;
}
@@ -1326,6 +1326,26 @@
}
/**
+ * Add an item to the database in a specified container. Sets the container, screen, cellX and
+ * cellY fields of the item. Also assigns an ID to the item.
+ */
+ static boolean addGestureToDatabase(Context context, ItemInfo item, boolean notify) {
+ final ContentValues values = new ContentValues();
+ final ContentResolver cr = context.getContentResolver();
+
+ item.onAddToDatabase(values);
+
+ Uri result = cr.insert(notify ? LauncherSettings.Gestures.CONTENT_URI :
+ LauncherSettings.Gestures.CONTENT_URI_NO_NOTIFICATION, values);
+
+ if (result != null) {
+ item.id = Integer.parseInt(result.getPathSegments().get(1));
+ }
+
+ return result != null;
+ }
+
+ /**
* Update an item to the database in a specified container.
*/
static void updateItemInDatabase(Context context, ItemInfo item) {
@@ -1359,4 +1379,84 @@
cr.delete(LauncherSettings.Favorites.CONTENT_URI,
LauncherSettings.Favorites.CONTAINER + "=" + info.id, null);
}
+
+ static void deleteGestureFromDatabase(Context context, ItemInfo item) {
+ final ContentResolver cr = context.getContentResolver();
+
+ cr.delete(LauncherSettings.Gestures.getContentUri(item.id, false), null, null);
+ }
+
+ static void updateGestureInDatabase(Context context, ItemInfo item) {
+ final ContentValues values = new ContentValues();
+ final ContentResolver cr = context.getContentResolver();
+
+ item.onAddToDatabase(values);
+
+ cr.update(LauncherSettings.Gestures.getContentUri(item.id, false), values, null, null);
+ }
+
+
+ ApplicationInfo queryGesture(Context context, String id) {
+ final ContentResolver contentResolver = context.getContentResolver();
+ final PackageManager manager = context.getPackageManager();
+ final Cursor c = contentResolver.query(
+ LauncherSettings.Gestures.CONTENT_URI, null, LauncherSettings.Gestures._ID + "=?",
+ new String[] { id }, null);
+
+ ApplicationInfo info = null;
+
+ try {
+ final int idIndex = c.getColumnIndexOrThrow(LauncherSettings.Gestures._ID);
+ final int intentIndex = c.getColumnIndexOrThrow(LauncherSettings.Gestures.INTENT);
+ final int titleIndex = c.getColumnIndexOrThrow(LauncherSettings.Gestures.TITLE);
+ final int iconTypeIndex = c.getColumnIndexOrThrow(LauncherSettings.Gestures.ICON_TYPE);
+ final int iconIndex = c.getColumnIndexOrThrow(LauncherSettings.Gestures.ICON);
+ final int iconPackageIndex = c.getColumnIndexOrThrow(LauncherSettings.Gestures.ICON_PACKAGE);
+ final int iconResourceIndex = c.getColumnIndexOrThrow(LauncherSettings.Gestures.ICON_RESOURCE);
+ final int itemTypeIndex = c.getColumnIndexOrThrow(LauncherSettings.Gestures.ITEM_TYPE);
+
+ String intentDescription;
+ Intent intent;
+
+ if (c.moveToNext()) {
+ int itemType = c.getInt(itemTypeIndex);
+
+ switch (itemType) {
+ case LauncherSettings.Favorites.ITEM_TYPE_APPLICATION:
+ case LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT:
+ intentDescription = c.getString(intentIndex);
+ try {
+ intent = Intent.getIntent(intentDescription);
+ } catch (java.net.URISyntaxException e) {
+ return null;
+ }
+
+ if (itemType == LauncherSettings.Favorites.ITEM_TYPE_APPLICATION) {
+ info = getApplicationInfo(manager, intent, context);
+ } else {
+ info = getApplicationInfoShortcut(c, context, iconTypeIndex,
+ iconPackageIndex, iconResourceIndex, iconIndex);
+ }
+
+ if (info == null) {
+ info = new ApplicationInfo();
+ info.icon = manager.getDefaultActivityIcon();
+ }
+
+ info.isGesture = true;
+ info.title = c.getString(titleIndex);
+ info.intent = intent;
+ info.id = c.getLong(idIndex);
+
+ break;
+ }
+ }
+ } catch (Exception e) {
+ w(LOG_TAG, "Could not load gesture with name " + id);
+ } finally {
+ c.close();
+ }
+
+ return info;
+ }
}