mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-02 08:56:55 +00:00
Separating apps list callback from model callback and simplifying various events
Bug: 137568159 Change-Id: I4d8bb5c01cabe642731ebd3f57fe15bdc5a569b7
This commit is contained in:
@@ -20,20 +20,18 @@ import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Process;
|
||||
|
||||
import com.android.launcher3.AllAppsList;
|
||||
import com.android.launcher3.AppInfo;
|
||||
import com.android.launcher3.ItemInfo;
|
||||
import com.android.launcher3.LauncherAppState;
|
||||
import com.android.launcher3.LauncherAppWidgetInfo;
|
||||
import com.android.launcher3.LauncherModel.CallbackTask;
|
||||
import com.android.launcher3.LauncherModel.Callbacks;
|
||||
import com.android.launcher3.model.BgDataModel.Callbacks;
|
||||
import com.android.launcher3.PromiseAppInfo;
|
||||
import com.android.launcher3.WorkspaceItemInfo;
|
||||
import com.android.launcher3.compat.PackageInstallerCompat;
|
||||
import com.android.launcher3.compat.PackageInstallerCompat.PackageInstallInfo;
|
||||
import com.android.launcher3.util.InstantAppResolver;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
|
||||
/**
|
||||
@@ -66,41 +64,11 @@ public class PackageInstallStateChangedTask extends BaseModelUpdateTask {
|
||||
}
|
||||
|
||||
synchronized (apps) {
|
||||
PromiseAppInfo updated = null;
|
||||
final ArrayList<AppInfo> removed = new ArrayList<>();
|
||||
for (int i=0; i < apps.size(); i++) {
|
||||
final AppInfo appInfo = apps.get(i);
|
||||
final ComponentName tgtComp = appInfo.getTargetComponent();
|
||||
if (tgtComp != null && tgtComp.getPackageName().equals(mInstallInfo.packageName)) {
|
||||
if (appInfo instanceof PromiseAppInfo) {
|
||||
final PromiseAppInfo promiseAppInfo = (PromiseAppInfo) appInfo;
|
||||
if (mInstallInfo.state == PackageInstallerCompat.STATUS_INSTALLING) {
|
||||
promiseAppInfo.level = mInstallInfo.progress;
|
||||
updated = promiseAppInfo;
|
||||
} else if (mInstallInfo.state == PackageInstallerCompat.STATUS_FAILED) {
|
||||
apps.removePromiseApp(appInfo);
|
||||
removed.add(appInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PromiseAppInfo updated = apps.updatePromiseInstallInfo(mInstallInfo);
|
||||
if (updated != null) {
|
||||
final PromiseAppInfo updatedPromiseApp = updated;
|
||||
scheduleCallbackTask(new CallbackTask() {
|
||||
@Override
|
||||
public void execute(Callbacks callbacks) {
|
||||
callbacks.bindPromiseAppProgressUpdated(updatedPromiseApp);
|
||||
}
|
||||
});
|
||||
}
|
||||
if (!removed.isEmpty()) {
|
||||
scheduleCallbackTask(new CallbackTask() {
|
||||
@Override
|
||||
public void execute(Callbacks callbacks) {
|
||||
callbacks.bindAppInfosRemoved(removed);
|
||||
}
|
||||
});
|
||||
scheduleCallbackTask(c -> c.bindPromiseAppProgressUpdated(updated));
|
||||
}
|
||||
bindApplicationsIfNeeded();
|
||||
}
|
||||
|
||||
synchronized (dataModel) {
|
||||
|
||||
Reference in New Issue
Block a user