本文整理汇总了C++中PackageInfoRef::Get方法的典型用法代码示例。如果您正苦于以下问题:C++ PackageInfoRef::Get方法的具体用法?C++ PackageInfoRef::Get怎么用?C++ PackageInfoRef::Get使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PackageInfoRef
的用法示例。
在下文中一共展示了PackageInfoRef::Get方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
PackageRow::PackageRow(const PackageInfoRef& packageRef,
PackageListener* packageListener)
:
Inherited(ceilf(be_plain_font->Size() * 1.8f)),
fPackage(packageRef),
fPackageListener(packageListener)
{
if (packageRef.Get() == NULL)
return;
PackageInfo& package = *packageRef.Get();
// Package icon and title
// NOTE: The icon BBitmap is referenced by the fPackage member.
UpdateTitle();
// Rating
UpdateRating();
// Summary
UpdateSummary();
// Size
UpdateSize();
// Status
UpdateState();
package.AddListener(fPackageListener);
}
示例2: SetField
void
PackageRow::UpdateRating()
{
if (fPackage.Get() == NULL)
return;
RatingSummary summary = fPackage->CalculateRatingSummary();
SetField(new RatingField(summary.averageRating), kRatingColumn);
}
示例3: SizeField
void
PackageRow::UpdateSize()
{
if (fPackage.Get() == NULL)
return;
SetField(new SizeField(fPackage->Size()), kSizeColumn);
}
示例4: BStringField
void
PackageRow::UpdateSummary()
{
if (fPackage.Get() == NULL)
return;
SetField(new BStringField(fPackage->ShortDescription()),
kDescriptionColumn);
}
示例5: SharedBitmapStringField
void
PackageRow::UpdateTitle()
{
if (fPackage.Get() == NULL)
return;
SetField(new SharedBitmapStringField(fPackage->Icon(),
SharedBitmap::SIZE_16, fPackage->Title()), kTitleColumn);
}
示例6: FindAppToLaunch
static bool FindAppToLaunch(const PackageInfoRef& package,
DeskbarLinkList& foundLinks)
{
if (package.Get() == NULL)
return false;
int32 installLocation = InstallLocation(package);
BPath packagePath;
if (installLocation == B_PACKAGE_INSTALLATION_LOCATION_SYSTEM) {
if (find_directory(B_SYSTEM_PACKAGES_DIRECTORY, &packagePath)
!= B_OK) {
return false;
}
} else if (installLocation == B_PACKAGE_INSTALLATION_LOCATION_HOME) {
if (find_directory(B_USER_PACKAGES_DIRECTORY, &packagePath)
!= B_OK) {
return false;
}
} else {
printf("OpenPackageAction::FindAppToLaunch(): "
"unknown install location");
return false;
}
packagePath.Append(package->FileName());
BNoErrorOutput errorOutput;
BPackageReader reader(&errorOutput);
status_t status = reader.Init(packagePath.Path());
if (status != B_OK) {
printf("OpenPackageAction::FindAppToLaunch(): "
"failed to init BPackageReader(%s): %s\n",
packagePath.Path(), strerror(status));
return false;
}
// Scan package contents for Deskbar links
DeskbarLinkFinder contentHandler(foundLinks);
status = reader.ParseContent(&contentHandler);
if (status != B_OK) {
printf("OpenPackageAction::FindAppToLaunch(): "
"failed parse package contents (%s): %s\n",
packagePath.Path(), strerror(status));
return false;
}
return foundLinks.CountItems() > 0;
}
示例7: AcceptsPackage
virtual bool AcceptsPackage(const PackageInfoRef& package) const
{
if (package.Get() == NULL)
return false;
const CategoryList& categories = package->Categories();
for (int i = categories.CountItems() - 1; i >= 0; i--) {
const CategoryRef& category = categories.ItemAtFast(i);
if (category.Get() == NULL)
continue;
if (category->Name() == fCategory)
return true;
}
return false;
}
示例8: Inherited
PackageRow::PackageRow(const PackageInfoRef& packageRef,
PackageListener* packageListener)
:
Inherited(ceilf(be_plain_font->Size() * 1.8f)),
fPackage(packageRef),
fPackageListener(packageListener)
{
if (packageRef.Get() == NULL)
return;
PackageInfo& package = *packageRef.Get();
// Package icon and title
// NOTE: The icon BBitmap is referenced by the fPackage member.
const BBitmap* icon = NULL;
if (package.Icon().Get() != NULL)
icon = package.Icon()->Bitmap(SharedBitmap::SIZE_16);
SetField(new BBitmapStringField(icon, package.Title()), kTitleColumn);
// Rating
UpdateRating();
// Description
SetField(new BStringField(package.ShortDescription()), kDescriptionColumn);
// Size
// TODO: Store package size
SetField(new BStringField("0 KiB"), kSizeColumn);
// Status
// TODO: Fetch info about installed/deactivated/uninstalled/...
SetField(new BStringField(package_state_to_string(fPackage)),
kStatusColumn);
package.AddListener(fPackageListener);
}
示例9:
void
ScreenshotWindow::SetPackage(const PackageInfoRef& package)
{
if (fPackage == package)
return;
fPackage = package;
BString title = B_TRANSLATE("Screenshot");
if (package.Get() != NULL) {
title = package->Title();
_DownloadScreenshot();
}
SetTitle(title);
}
示例10:
void
ScreenshotWindow::SetPackage(const PackageInfoRef& package)
{
if (fPackage == package)
return;
fPackage = package;
BString title = B_TRANSLATE("Screenshot");
if (package.Get() != NULL) {
title = package->Title();
_DownloadScreenshot();
}
SetTitle(title);
atomic_set(&fCurrentScreenshotIndex, 0);
_UpdateToolBar();
}
示例11: lock
status_t
MainWindow::_PopulatePackageWorker(void* arg)
{
MainWindow* window = reinterpret_cast<MainWindow*>(arg);
while (acquire_sem(window->fPackageToPopulateSem) == B_OK) {
PackageInfoRef package;
{
AutoLocker<BLocker> lock(&window->fPackageToPopulateLock);
package = window->fPackageToPopulate;
}
if (package.Get() != NULL) {
window->fModel.PopulatePackage(package,
Model::POPULATE_USER_RATINGS | Model::POPULATE_SCREEN_SHOTS
| Model::POPULATE_CHANGELOG);
}
}
return 0;
}
示例12: manager
void
MainWindow::_RefreshPackageList()
{
BPackageRoster roster;
BStringList repositoryNames;
status_t result = roster.GetRepositoryNames(repositoryNames);
if (result != B_OK)
return;
DepotInfoMap depots;
for (int32 i = 0; i < repositoryNames.CountStrings(); i++) {
const BString& repoName = repositoryNames.StringAt(i);
depots[repoName] = DepotInfo(repoName);
}
PackageManager manager(B_PACKAGE_INSTALLATION_LOCATION_HOME);
try {
manager.Init(PackageManager::B_ADD_INSTALLED_REPOSITORIES
| PackageManager::B_ADD_REMOTE_REPOSITORIES);
} catch (BException ex) {
BString message(B_TRANSLATE("An error occurred while "
"initializing the package manager: %message%"));
message.ReplaceFirst("%message%", ex.Message());
_NotifyUser("Error", message.String());
return;
}
BObjectList<BSolverPackage> packages;
result = manager.Solver()->FindPackages("",
BSolver::B_FIND_CASE_INSENSITIVE | BSolver::B_FIND_IN_NAME
| BSolver::B_FIND_IN_SUMMARY | BSolver::B_FIND_IN_DESCRIPTION
| BSolver::B_FIND_IN_PROVIDES,
packages);
if (result != B_OK) {
// TODO: notify user
return;
}
if (packages.IsEmpty())
return;
PackageInfoMap foundPackages;
// if a given package is installed locally, we will potentially
// get back multiple entries, one for each local installation
// location, and one for each remote repository the package
// is available in. The above map is used to ensure that in such
// cases we consolidate the information, rather than displaying
// duplicates
PackageInfoMap remotePackages;
// any package that we find in a remote repository goes in this map.
// this is later used to discern which packages came from a local
// installation only, as those must be handled a bit differently
// upon uninstallation, since we'd no longer be able to pull them
// down remotely.
BStringList systemFlaggedPackages;
// any packages flagged as a system package are added to this list.
// such packages cannot be uninstalled, nor can any of their deps.
PackageInfoMap systemInstalledPackages;
// any packages installed in system are added to this list.
// This is later used for dependency resolution of the actual
// system packages in order to compute the list of protected
// dependencies indicated above.
BitmapRef defaultIcon(new(std::nothrow) SharedBitmap(
"application/x-vnd.haiku-package"), true);
for (int32 i = 0; i < packages.CountItems(); i++) {
BSolverPackage* package = packages.ItemAt(i);
const BPackageInfo& repoPackageInfo = package->Info();
PackageInfoRef modelInfo;
PackageInfoMap::iterator it = foundPackages.find(
repoPackageInfo.Name());
if (it != foundPackages.end())
modelInfo.SetTo(it->second);
else {
// Add new package info
BString publisherURL;
if (repoPackageInfo.URLList().CountStrings() > 0)
publisherURL = repoPackageInfo.URLList().StringAt(0);
BString publisherName = repoPackageInfo.Vendor();
const BStringList& rightsList = repoPackageInfo.CopyrightList();
if (rightsList.CountStrings() > 0)
publisherName = rightsList.StringAt(0);
modelInfo.SetTo(new(std::nothrow) PackageInfo(
repoPackageInfo.Name(),
repoPackageInfo.Version().ToString(),
PublisherInfo(BitmapRef(), publisherName,
"", publisherURL), repoPackageInfo.Summary(),
repoPackageInfo.Description(),
repoPackageInfo.Flags()),
true);
if (modelInfo.Get() == NULL)
return;
foundPackages[repoPackageInfo.Name()] = modelInfo;
}
//.........这里部分代码省略.........