bool ResultWindow::_AddPackages(BGroupLayout* packagesGroup, const PackageList& packages, const PackageSet& ignorePackages, bool install) { bool packagesAdded = false; for (int32 i = 0; BSolverPackage* package = packages.ItemAt(i); i++) { if (ignorePackages.find(package) != ignorePackages.end()) continue; BString text; if (install) { text.SetToFormat("install package %s from repository %s\n", package->Info().FileName().String(), package->Repository()->Name().String()); } else { text.SetToFormat("uninstall package %s\n", package->VersionedName().String()); } BStringView* packageView = new BStringView(NULL, text); packagesGroup->AddView(packageView); packageView->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET)); packagesAdded = true; } return packagesAdded; }
static set<string> getSourceConfigNames(PackageSet& packages, Package* package) { set<string> sources; if (package->getType() == FILE_ESSENCE_DESC_TYPE) { sources.insert(dynamic_cast<SourcePackage*>(package)->sourceConfigName); return sources; } vector<Track*>::const_iterator iter1; for (iter1 = package->tracks.begin(); iter1 != package->tracks.end(); iter1++) { Track* track = *iter1; SourcePackage dummy; dummy.uid = track->sourceClip->sourcePackageUID; PackageSet::iterator result = packages.find(&dummy); if (result != packages.end()) { Package* referencedPackage = *result; set<string> refSources = getSourceConfigNames(packages, referencedPackage); sources.insert(refSources.begin(), refSources.end()); } } return sources; }
status_t PackageManager::CommitTransaction(Transaction& transaction, BCommitTransactionResult& _result) { Volume* volume = fRoot->GetVolume(transaction.Repository().Location()); if (volume == NULL) return B_BAD_VALUE; // Get the packages that have already been added to/removed from the // packages directory and thus need to be handled specially by // Volume::CommitTransaction(). PackageSet packagesAlreadyAdded; PackageSet packagesAlreadyRemoved; if (volume == fVolume) { const PackageSet& packagesToActivate = volume->PackagesToBeActivated(); for (PackageSet::const_iterator it = packagesToActivate.begin(); it != packagesToActivate.end(); ++it) { Package* package = *it; if (fPackagesAddedByUser.find(_SolverPackageFor(package)) != fPackagesAddedByUser.end()) { packagesAlreadyAdded.insert(package); } } const PackageSet& packagesToDeactivate = volume->PackagesToBeDeactivated(); for (PackageSet::const_iterator it = packagesToDeactivate.begin(); it != packagesToDeactivate.end(); ++it) { Package* package = *it; if (fPackagesRemovedByUser.find(_SolverPackageFor(package)) != fPackagesRemovedByUser.end()) { packagesAlreadyRemoved.insert(package); } } } volume->CommitTransaction(transaction.ActivationTransaction(), packagesAlreadyAdded, packagesAlreadyRemoved, _result); return B_OK; }
bool BaseFileManager::registerPackage(Common::FSNode file, const Common::String &filename, bool searchSignature) { PackageSet *pack = new PackageSet(file, filename, searchSignature); _packages.add(file.getName(), pack, pack->getPriority() , true); return STATUS_OK; }