PackageActionList PackageManager::GetPackageActions(PackageInfoRef package, Model* model) { PackageActionList actionList; if (package->IsSystemPackage() || package->IsSystemDependency()) return actionList; int32 state = package->State(); if (state == ACTIVATED || state == INSTALLED) { actionList.Add(PackageActionRef(new UninstallPackageAction( package, model), true)); // Add OpenPackageActions for each deskbar link found in the // package DeskbarLinkList foundLinks; if (OpenPackageAction::FindAppToLaunch(package, foundLinks) && foundLinks.CountItems() < 4) { for (int32 i = 0; i < foundLinks.CountItems(); i++) { const DeskbarLink& link = foundLinks.ItemAtFast(i); actionList.Add(PackageActionRef(new OpenPackageAction( package, model, link), true)); } } } else if (state == NONE || state == UNINSTALLED) { actionList.Add(PackageActionRef(new InstallPackageAction(package, model), true)); } // TODO: activation status return actionList; }
PackageActionList PackageManager::GetPackageActions(PackageInfoRef package, Model* model) { PackageActionList actionList; if (package->IsSystemPackage() || package->IsSystemDependency()) return actionList; int32 state = package->State(); if (state == ACTIVATED || state == INSTALLED) { actionList.Add(PackageActionRef(new UninstallPackageAction( package, model), true)); } else { actionList.Add(PackageActionRef(new InstallPackageAction(package, model), true)); } // TODO: activation status return actionList; }
inline BString package_state_to_string(PackageInfoRef ref) { switch (ref->State()) { case NONE: return B_TRANSLATE(skPackageStateAvailable); case INSTALLED: return B_TRANSLATE(skPackageStateInactive); case ACTIVATED: return B_TRANSLATE(skPackageStateActive); case UNINSTALLED: return B_TRANSLATE(skPackageStateUninstalled); case DOWNLOADING: { BString data; data.SetToFormat("%3.2f%%", ref->DownloadProgress() * 100.0); return data; } case PENDING: return B_TRANSLATE(skPackageStatePending); } return B_TRANSLATE("Unknown"); }