From 22dc65e741139936343bc792900b2e2e25378793 Mon Sep 17 00:00:00 2001 From: Mac Duy Hai Date: Wed, 5 Feb 2014 10:52:07 +0000 Subject: [PATCH 1/2] Fix deprecated EMPTY_ARRAY usage (nanoprotos). Newer nanoproto compiler discourages the use of this. Change-Id: Ic27a6d15f2892bb49df3100147c086a2bce20fd4 --- src/com/android/launcher3/LauncherBackupHelper.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/android/launcher3/LauncherBackupHelper.java b/src/com/android/launcher3/LauncherBackupHelper.java index 74eefcaec8..a45f2931be 100644 --- a/src/com/android/launcher3/LauncherBackupHelper.java +++ b/src/com/android/launcher3/LauncherBackupHelper.java @@ -193,7 +193,7 @@ public class LauncherBackupHelper implements BackupHelper { Log.e(TAG, "launcher backup has failed", e); } - out.key = keys.toArray(BackupProtos.Key.EMPTY_ARRAY); + out.key = keys.toArray(new BackupProtos.Key[keys.size()]); writeJournal(newState, out); Log.v(TAG, "onBackup: wrote " + out.bytes + "b in " + out.rows + " rows."); } @@ -266,7 +266,7 @@ public class LauncherBackupHelper implements BackupHelper { // will catch any changes the restore process might have made Journal out = new Journal(); out.t = 0; - out.key = mKeys.toArray(BackupProtos.Key.EMPTY_ARRAY); + out.key = mKeys.toArray(new BackupProtos.Key[mKeys.size()]); writeJournal(newState, out); Log.v(TAG, "onRestore: read " + mKeys.size() + " rows"); mKeys.clear(); From 76a47a1b2273c4d7dfab0beeadc1a8387e6a2840 Mon Sep 17 00:00:00 2001 From: Adam Cohen Date: Wed, 5 Feb 2014 11:47:43 -0800 Subject: [PATCH 2/2] Small refactor to separate adding workspace / all apps items Change-Id: I06b7bc7f7f0e01696cb9670b8385e5148593e3e0 --- .../launcher3/InstallShortcutReceiver.java | 2 +- src/com/android/launcher3/Launcher.java | 8 ++- src/com/android/launcher3/LauncherModel.java | 56 +++++++++++++------ 3 files changed, 45 insertions(+), 21 deletions(-) diff --git a/src/com/android/launcher3/InstallShortcutReceiver.java b/src/com/android/launcher3/InstallShortcutReceiver.java index 7ab4e0477c..28cef1346a 100644 --- a/src/com/android/launcher3/InstallShortcutReceiver.java +++ b/src/com/android/launcher3/InstallShortcutReceiver.java @@ -304,7 +304,7 @@ public class InstallShortcutReceiver extends BroadcastReceiver { // Add the new apps to the model and bind them if (!addShortcuts.isEmpty()) { LauncherAppState app = LauncherAppState.getInstance(); - app.getModel().addAndBindAddedApps(context, addShortcuts, new ArrayList()); + app.getModel().addAndBindAddedWorkspaceApps(context, addShortcuts); } } } diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 709f4cf532..f03ffc6e8b 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -3844,15 +3844,17 @@ public class Launcher extends Activity } // Add the new screens - bindAddScreens(newScreens); + if (newScreens != null) { + bindAddScreens(newScreens); + } // We add the items without animation on non-visible pages, and with // animations on the new page (which we will try and snap to). - if (!addNotAnimated.isEmpty()) { + if (addNotAnimated != null && !addNotAnimated.isEmpty()) { bindItems(addNotAnimated, 0, addNotAnimated.size(), false); } - if (!addAnimated.isEmpty()) { + if (addAnimated != null && !addAnimated.isEmpty()) { bindItems(addAnimated, 0, addAnimated.size(), true); } diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java index 2102a1faca..c0444bb0d4 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -292,17 +292,40 @@ public class LauncherModel extends BroadcastReceiver { return null; } - public void addAndBindAddedApps(final Context context, final ArrayList workspaceApps, - final ArrayList allAppsApps) { - Callbacks cb = mCallbacks != null ? mCallbacks.get() : null; - addAndBindAddedApps(context, workspaceApps, cb, allAppsApps); + public void addAppsToAllApps(final Context ctx, final ArrayList allAppsApps) { + final Callbacks callbacks = mCallbacks != null ? mCallbacks.get() : null; + + if (allAppsApps == null) { + throw new RuntimeException("allAppsApps must not be null"); + } + if (allAppsApps.isEmpty()) { + return; + } + + // Process the newly added applications and add them to the database first + Runnable r = new Runnable() { + public void run() { + runOnMainThread(new Runnable() { + public void run() { + Callbacks cb = mCallbacks != null ? mCallbacks.get() : null; + if (callbacks == cb && cb != null) { + callbacks.bindAppsAdded(null, null, null, allAppsApps); + } + } + }); + } + }; + runOnWorkerThread(r); } - public void addAndBindAddedApps(final Context context, final ArrayList workspaceApps, - final Callbacks callbacks, final ArrayList allAppsApps) { - if (workspaceApps == null || allAppsApps == null) { + + public void addAndBindAddedWorkspaceApps(final Context context, + final ArrayList workspaceApps) { + final Callbacks callbacks = mCallbacks != null ? mCallbacks.get() : null; + + if (workspaceApps == null) { throw new RuntimeException("workspaceApps and allAppsApps must not be null"); } - if (workspaceApps.isEmpty() && allAppsApps.isEmpty()) { + if (workspaceApps.isEmpty()) { return; } // Process the newly added applications and add them to the database first @@ -385,7 +408,7 @@ public class LauncherModel extends BroadcastReceiver { // Update the workspace screens updateWorkspaceScreenOrder(context, workspaceScreens); - if (!addedShortcutsFinal.isEmpty() || !allAppsApps.isEmpty()) { + if (!addedShortcutsFinal.isEmpty()) { runOnMainThread(new Runnable() { public void run() { Callbacks cb = mCallbacks != null ? mCallbacks.get() : null; @@ -404,7 +427,7 @@ public class LauncherModel extends BroadcastReceiver { } } callbacks.bindAppsAdded(addedWorkspaceScreensFinal, - addNotAnimated, addAnimated, allAppsApps); + addNotAnimated, addAnimated, null); } } }); @@ -1561,8 +1584,7 @@ public class LauncherModel extends BroadcastReceiver { } } if (!added.isEmpty()) { - Callbacks cb = mCallbacks != null ? mCallbacks.get() : null; - addAndBindAddedApps(context, added, cb, new ArrayList()); + addAndBindAddedWorkspaceApps(context, added); } } @@ -2594,14 +2616,14 @@ public class LauncherModel extends BroadcastReceiver { if (added != null) { // Ensure that we add all the workspace applications to the db - Callbacks cb = mCallbacks != null ? mCallbacks.get() : null; - if (!LauncherAppState.isDisableAllApps()) { - addAndBindAddedApps(context, new ArrayList(), cb, added); - } else { + if (LauncherAppState.isDisableAllApps()) { final ArrayList addedInfos = new ArrayList(added); - addAndBindAddedApps(context, addedInfos, cb, added); + addAndBindAddedWorkspaceApps(context, addedInfos); + } else { + addAppsToAllApps(context, added); } } + if (modified != null) { final ArrayList modifiedFinal = modified;